Ecriture d 'un scrip shell

Bonjour,Merci de m'aider pour realiser ce trvail, vraiment je trouve ça c'est difficile j ai essayer et jusqu'a mnt j'arrive pas.

mon probleme consiste à réaliser un ensemble client-serveur permettant la “suveillance”
des personnes connectées sur une machine. Pour cela, nous allons procéder en
plusieurs étapes:
1. Tout d’abord, on vous demande de réaliser un petit script qui écoute sur
l’entrée standard en l’attente de commande et renvoie la réponse sur la
sortie standard.
On demande d’implémenter les commandes suivantes :
NAME : indique le nom de la machine;
UPTIME : affiche depuis combien de temps la machine est en marche;
USERS : affiche le nom des utilisateurs connectés à la machine;
QUIT : termine le script
2. En utilisant votre script écrit précédement et à l’aide de la commande
netcat, faites en sorte que votre script soit lancé en tant que serveur sur
la machine (on regardera en particulier l’option -c) et qu’il soit relancé
lorsqu’une connection se termine.
3. Écrivez alors un client qui prend en entrée une liste de machine et affiche
les utilisateurs présents sur ces machines en contactant les serveurs sur ces
machines.
Configuration: linux 
Firefox 3.5.6

8 réponses

  1. Bonjour
    est ce que la sollution cest ce que j ai ecris en dessous?
    Merci
    1. Salut,

      Voir dans les pages man pour les commandes
      uptime
      hostname
      w
      who


      en l’attente de commande et renvoie la réponse sur la
      sortie standard."

      Si tu ne veux pas exécuter la commande mais juste l'affichée alors mets
      echo $commande au lieu de eval $commande
      1. merci pour l'orientation

        pour la command who
        j'ai deja fait ça

        #!/bin/sh
        echo "who |wc -l>utilistaursactuels.sh
        j'ai enregistré le fichier sous le nom utilsateursactuels.sh

        aprés j ai fait chmod +a +x utilisateursactuels.sh pour le rendre comme une commande du shell

        et quand j'excecute ./utilisteursactuels normalement ça marche mais j'ai pas l'envirinement linux pour essayer ce scrip

        pour les autres je vais essayer et si tu as plus d'orientatiosn merci.
    2. Salut,

      mais reste le probleme d'où vient ce fichier attente_stdin.sh ? est ce que c'est a moi de l'ecrire et le lancer pour l'ecoute et je lui donne comme nom attente_stdin.sh

      Oui, bien sûr que c'est à toi de l'écrire et tu peux lui donner n'importe quel nom.
      D'après toi chez moi comment il est arrivé? ;-)) Je l'ai écrit tout simplement.

      Pour ça tu dois utiliser un éditeur de texte sans mise en forme (kate,gedit, kwrite,nano,vi,emacs, scite, etc.)

      comment je peux renvoer la reponse sur la sortie standard? est ce que uniquement j'ajoutte la redirection de la commande comme suit:
      eval $commande >1

      Non, la sortie standard STDOUT c'est l'écran donc c'est par défaut il n'y a pas de redirection à faire si tu ne veux pas écrire autre part.
      En revanche si la sortie standard tu veux l'écrire dans un autre fichier alors tu dois utiliser les redirections

      Par exemple j'ai ouvert deux terminaux (la commande tty te donne le nom du fichier du terminal)
      /dev/pts/0 et /dev/pts/1

      Sur /dev/pts/0 je fait
      lami20j@debian:~$ tty
      /dev/pts/0
      lami20j@debian:~$ echo salut ici vers sortie standard
      salut ici vers sortie standard
      lami20j@debian:~$ echo salut vers /dev/pts/1 > /dev/pts/1
      lami20j@debian:~$ echo salut vers fichier salut.txt > salut.txt 
      lami20j@debian:~$ cat salut.txt 
      salut vers fichier salut.txt
      


      Sur /dev/pts/1 je vois
      lami20j@debian:~$ tty
      /dev/pts/1
      lami20j@debian:~$ salut vers /dev/pts/1
      

      Lit man bash le chapitre REDIRECTIONS
      1. Bonjour ;
        j'i lu les redirections ; merci pour votre orientation
        est ce que ce code est suffisant pour repondre à ma demande qui est "un petit script qui écoute sur
        l’entrée standard en l’attente de commande et renvoie la réponse sur la
        sortie standard."

        le code est le suivant :
        #!/bin/sh
        #"j'ecoute sur l'entrée standard en attente d'une commande "
        read commande
        eval $commande

        et si il est suffisant est ce que vous pouvez m'orienter comment implementer les commandes suivantes

        NAME : indique le nom de la machine;
        UPTIME : affiche depuis combien de temps la machine est en marche;
        USERS : affiche le nom des utilisateurs connectés à la machine;

        à noter que j'ai doccumenter sur linux et j'ai lu que
        le repertoire /etc contient les fichier de configuration (fichiers passwrd group initab.....) mais j'arrive pas à exploiter ces informations pour arriver a implementer les commandes citées.

        merci pour m'accorder de votre temps...
    3. Salut,

      J'ai pense pouvoir t'aider sur un problème ponctuel, mais je vois que tu as besoin d'un vrai cours, et je ne plaisante pas.

      est ce que read commande me permet uniquement de lire une commande c est a dire le fait d'crire commande

      read permet de lire une chaîne au clavier (ça c'est

      le compilateur comprend que c est une commande?
      Il s'agit d'un langage interprété et pas compilé

      pourqoui vous avez utilisez eval $commande?
      eval a permis d'évaluer la chaîne saisie comme une commande et pas comme une simple chaîne de caractère.

      Sans eval j'aurai écrit echo $commande et en ce moment c'est la chaîne que j'ai saisi qu'aurait été affichée.

      et pourquoi $../attente_stdin.sh?
      Lis cette article exécuter un script shell
      1. bonsoir;
        Merci pour les explication
        j'ai lu l'article et j'ai compris que
        ./attente_stdin.sh c'est la façon de lancer l'execution d'un script; et meme pour eval j'ai lu et j'ai compri pourqoui il faut faire eval $commande;
        mais reste le probleme d'où vient ce fichier attente_stdin.sh ? est ce que c'est a moi de l'ecrire et le lancer pour l'ecoute et je lui donne comme nom attente_stdin.sh

        #!/bin/sh
        #fichier d' ecoute d'une commande
        read commande
        eval $commande

        et si oui comment je peux renvoer la reponse sur la sortie standard? est ce que uniquement j'ajoutte la redirection de la commande comme suit:
        eval $commande >1

        merci et je m'exuse pour ce derangement reptitif car je suis totalemnt nouvelle ds ce domaine
    4. Salut,

      mais comment ecouter quel port utiliser quel protocol j arrive pas a comprendre
      Dans le fichier /etc/services tu trouveras les services et le port attribué.

      Par exemple si tu mets en place un serveur web le port 80 sera à l'écoute pour http et 443 pour https.
      Dans la configuration de serveur tu peux par exemple changer le port d'écoute.

      Par exemple sur mon serveur local j'ai mis 81
      La commande netstat me permet de voir ça.
      lami20j@debian:~$ su -c 'netstat -lpn | grep ":81\>"'
      Mot de passe : 
      tcp6       0      0 :::81                   :::*                    LISTEN      2944/apache2   


      Voici un lien sympa http://christian.caleca.free.fr/
      1. Salut,

        Par exemple
        $ cat attente_stdin.sh 
        #!/bin/bash
        
        echo -n "echo j'ecoute sur l'entrée standard (il faut entrer une commande) : "
        read commande
        eval $commande
        $ ./attente_stdin.sh 
        echo j'ecoute sur l'entrée standard (il faut entrer une commande) : ls
        attente_stdin.sh  choix.sh  division.sh
        $ ./attente_stdin.sh 
        echo j'ecoute sur l'entrée standard (il faut entrer une commande) : ls -l
        total 12
        -rwxr-xr-x 1 lami20j lami20j 122 déc.  27 11:50 attente_stdin.sh
        -rw-r--r-- 1 lami20j lami20j 466 déc.  26 17:07 choix.sh
        -rwxr-xr-x 1 lami20j lami20j 168 déc.  26 17:24 division.sh
        $ 
        1. merci pour vos reponses
          est ce que read commande me permet uniquement de lire une commande c est a dire le fait d'crire commande le compilateur comprend que c est une commande?
          pourqoui vous avez utilisez eval $commande?
          et pourquoi $../attente_stdin.sh?
          merci encore uen fois pour m eclaircir
      2. Modérateur
        1. bonjour
          je ne demande pas une sollution complete;mais au moins les grandes lignes de comment commencer;
          j'ai essayer mais j'ai pas arrivé
        2. Modérateur
          @melissa777j'ai essayer mais j'ai pas arrivé
          Ben justement t'as essayé quoi ?

          Ne serait-ce que ça, nous indiquera que tu as au moins essayé...
        3. @jipicyj'ai essayer de faire une lecture et comprendre : que lors de l'execution d'une commande un processus est crée, celui ci va alors ouvrir 03 flux:
          1.l'entrée standard dans lequel le processus va lire des données entrées par defaut qui est idetifié par 0 qui est le clavier.
          2. la sortie standard numero 1et qui reprsente l'ecranr
          3.la sortie standard d'erreur qui est 2
          j'ai lu aussi comment redirgier les resultats c'est avec >1
          aussi j ai compri que les users sont entregistrés dans /etc/passwrd

          mais comment ecouter quel port utiliser quel protocol j arrive pas a comprendre
        4. @jipicybsr,*est ce que vous pouvez me guider pour trouver une sollution?
        5. @jipicyje suis nouvelle ds la programmation shell c est mon premier essai pour lecoute sur lentrée standard en attente d'une commande et l envoi sur la sortie standar

          #!/bin/sh
          #monpremieressai
          echo "j'ecoute sur l'entrée standard"
          cat << | 1>