Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script Linux

    11 janvier 2021 à 18:29:50

    Bonjour, j'ai l'exercice suivant :

    Écrivez cette commande qui scrute toutes les secondes les processus du système et se termine lorsque l'utilisateur dont le login est passé en argument est connecté.Indication: l'utilisateur est connecté dès qu'un processus lui appartenant est présent dans le système.

    La correction est :

    J'ai beaucoup de mal avec les scripts, pourtant ayant le cours sous les yeux ... Mais ici c'est surtout la commande for i in `ps -aux | cut -f 1 -d ' '` que je ne comprends pas.

    PS : le while [0] signifie tant qu'une valeur est entrée en argument ?


    • Partager sur Facebook
    • Partager sur Twitter
      11 janvier 2021 à 18:44:54

      non. ceci n'est pas une correction.
      enfin, si, mais pas dans le sens que tu sembles donner au terme : c'est une correction infligée au shell. :lol:

      qu'est-ce que tu ne comprends pas de la ligne que tu as relevée ?

      PS : non, cela signifie tantQue test chaineQuelconque, dans l'exemple, 0.

      c'est-à-dire tantQue vrai, il aurait donc été possible de faire soit while true; do, soit 100% builtin while :; do

      -
      Edité par dantonq 11 janvier 2021 à 18:45:52

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        12 janvier 2021 à 19:32:15

        OK, merci pour ta réponse.

        En fait que veux dire "in" après le 

        for i in


        ?

        Pour

        ps -aux

        , je crois que cela permet d'afficher les processus, avec le nom de l'utilisateur et l'heure de lancement (u), et x pour "afficher les processus qui n'ont pas de terminal de contrôle" o_O. Le pipe permet de passer d'une commande à une autre. Ensuite, le 

        cut -f 1 -d ' '


        permet d'afficher le 1er champ ?

        Ensuite le deuxième "do" j'ai du mal à comprendre d'où viennent les variables du "if" ..

        Pour le then, je pense avoir compris.

        Le exit 0, pourquoi mets-on un "0" ?

        Mes questions doivent paraître bêtes ... J'essaie de comprendre le fonctionnement mais c'est difficile. Car bon, sur internet on trouve parfois des explications sur des commandes, mais pour adapter à certains scripts je n'y arrive pas ...

        -
        Edité par CyprienHanercos 12 janvier 2021 à 19:33:48

        • Partager sur Facebook
        • Partager sur Twitter
          12 janvier 2021 à 19:47:09

          Le $i, c'est le contenu de la variable i du for.

          l est improbable que cet exercice tombe du ciel, c'est sûrement la mise en application d'un cours que tu suis.

          Conseil : commence par relire ce cours, comme ça on n'aura pas besoin de te le refaire.

          Ensuite analyse les choses dans l'ordre

          • Regarde ce que fait la commande ps
          • Ce qu'elle fait quand elle est combinée avec cut
          • Ce que c'est qu'une boucle for
          • Ce que veulent dire les backquotes
          • Etc

          -
          Edité par michelbillaud 12 janvier 2021 à 19:52:25

          • Partager sur Facebook
          • Partager sur Twitter
            12 janvier 2021 à 19:58:58

            CyprienHanercos a écrit:

            En fait que veux dire "in" après le 

            for i in

            ?

            can't you speak english ? :)

            • Partager sur Facebook
            • Partager sur Twitter

            Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

              12 janvier 2021 à 20:21:10

              for x in ... est une boucle sur tous les "mots" qui suit in. Un mot étant principalement des caractères séparé par des espaces.

              Pour le cut, c'est ça.

              $1 et le premier paramètre du script et $i et le i du for i in.

              exit prends un code de résultat, 0 étant pour dire tout va bien. Par défaut il retourne le code de la commande précédente.

              Mais ce code est vachement compliqué pour peu de chose:

              until ps h -u "$1" ; do
                sleep 1
              done >/dev/null
              echo 'Utilisateur connecté'

              Après, on pourrait vérifier que l'utilisateur existe

              -
              Edité par jo_link_noir 12 janvier 2021 à 20:22:37

              • Partager sur Facebook
              • Partager sur Twitter
                12 janvier 2021 à 20:36:55

                C'est un exercice que j'ai trouvé sur internet, mais oui je vais relire votre cours pour revoir toutes les commandes.
                • Partager sur Facebook
                • Partager sur Twitter
                  12 janvier 2021 à 22:54:26

                  Ce n'est pas notre cours.

                  -
                  Edité par michelbillaud 12 janvier 2021 à 22:54:38

                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 janvier 2021 à 23:15:56

                    d'ailleurs, moi, je veux bien aller leur tirer les oreilles.

                    tu peux nous donner l'adresse*, stp.

                    --
                    * peut-être en MP, pour ne pas leur faire de "publicité".

                    -
                    Edité par dantonq 12 janvier 2021 à 23:17:27

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                    Script Linux

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown