Probleme script "qui fait quoi"

Résolu
bonjour,
je doit ecrire un script qui permet de savoit qui est loggé est ce que fait la personne sans le point dans le username et sans utiliser ni sed ni awk, en gros ça doit ressembler a ça:

Nom Prénom
PID TTY TIME CMD
8368 pts/0 00:00:00 vim
9544 pts/2 00:00:00 ps

pour l'instant j'ai trouvé ceci mais le problème c'est que je ne vois que un nom qui apparait!!!

finger -l | grep Name | cut -d":" -f3 > temp
echo " " > who_process
who | cut -d" " -f1 | while read lines
do
grep $lines temp >> who_process
echo " " >> who_process
ps -u $lines >> who_process
done
rm temp | echo "List of user(s) and process running have been save to the file who_process"
exit

j'ai essayé en déclarant une variable mais elle ne marche pas..... vrainom=$((grep $lines temp | cut -d" " -f2,3)) est-ce étonnant????

si quelqu'un peut m'aider.....

merci d'avance.
Configuration: Windows XP
Firefox 2.0.0.6

8 réponses

  1. Modérateur
    Salut,

    ça te conviens?
    ps -eopid,tty,time,cmd,user

    j'ai essayé en déclarant une variable mais elle ne marche pas..... vrainom=$((grep $lines temp | cut -d" " -f2,3)) est-ce étonnant????
    oui
    la syntaxe est variable=$(commande)
    lami20j@deb:~$ user=$(grep root /etc/passwd)
    lami20j@deb:~$ echo $user
    root:x:0:0:root:/root:/bin/bash
    lami20j@deb:~$ somme=$((2+2))
    lami20j@deb:~$ echo $somme
    4
    lami20j@deb:~$
    1
    1. salut,

      merci pour ta réponse

      j'avance doucement mais surement maintenant c'est tout les noms qui s'affiche en faisant cut -d" " -f2,3 temp >> who_process
      j'ai beau me cassé la téte mais je trouve pas la solution.

      pour la variable je m'était basé sur celle-ci: n=`grep $lines file_tempo | awk '{ print $3,$4 }' d'où l'idée de faire celle là
      vrainom=$(grep $lines temp | cut -d" " -f2,3) étant donné que je ne peux pas utilisé awk mais c'est encore pire!!!!!

      autrement tout le reste va bien, j'ai bien tout les process des différents utilisateurs qui s'affichent mais il y a juste que je n'arrive pas a insérer leur vrai nom au-dessus!!!!!!

      voilà où j'en suis

      finger -l | grep Name |cut -d":" -f3 > temp
      echo " " > who_process
      who | cut -d" " -f1 | while read lines
      do
      cut -d" " -f2,3 temp >> who_process
      echo " " >> who_process
      ps -u $lines >> who_process
      done
      rm temp | echo "List of user(s) and process running have been saved to the file who_process"
      exit

      un petite éclaircie serait la bienvenue.... :)
      0
      1. Modérateur
        Salut,

        Perso c'est cette ligne qui me fait zarbi :
        cut -d" " -f2,3 temp >> who_process

        J'ai l'impression que tu ramasses du vent avec ça ;-\
        Il ressemble à quoi ton fichier "temp" ? (affiches-en quelques lignes)
        0
        1. salut

          Le fichier temp contient les username mais sans le point au milieu que j'ai obtenue en faisant finger -l | grep Name | cut -d":" -f3 > temp

          prénom nom
          prénom nom
          prénom nom
          ...

          En faisant cut -d" " -f2,3 temp j'arrivais à afficher les prénom nom et donc je pensais qu'avec cette variable ça aurait marché mais non. vrainom=$(grep $lines temp | cut -d" " -f2,3)

          Et pour être franc elle me fait zarbi aussi la ligne mais c'est pas la pire que j'ai pondu... :)

          Cest juste au niveau de cette ligne que je galére.

          Au lieu de ça:

          Nom Prénom
          PID TTY TIME CMD
          8368 pts/0 00:00:00 vim
          9544 pts/2 00:00:00 ps

          Nom Prénom
          PID TTY TIME CMD
          8368 pts/0 00:00:00 vim
          9544 pts/2 00:00:00 ps

          j'ai ça

          Nom Prénom
          Nom Prénom
          PID TTY TIME CMD
          8368 pts/0 00:00:00 vim
          9544 pts/2 00:00:00 ps

          Nom Prénom
          Nom Prénom
          PID TTY TIME CMD
          8368 pts/0 00:00:00 vim
          9544 pts/2 00:00:00 ps

          j'espère que tu y vois un peu plus clair.....
          0
          1. Modérateur
            Affiche ton script dans son intégralité s'il te plaît.

            Exécutes-le aussi en mode "débogage" en rajoutant "set -xv" après le "she-bang", peut être verras-tu ce qui te fait ce double "echo" du nom... ;-\

            ;-))
            0
            1. ok j'essayerais en mode debug plus tard en attendant revoilà le script, j'ai mis la variable cette fois

              finger -l | grep Name |cut -d":" -f3 > temp
              who | cut -d" " -f1 | while read lines
              do
              vrainom=$(grep $lines temp | cut -d" " -f2,3)
              echo " " > who_process
              echo $vrainom >> who_process
              echo " " >> who_process
              ps -u $lines >> who_process
              done
              rm temp
              echo "List of user(s) and process running have been saved to the file who_process"
              exit

              comme dit plus haut, en gros, je cherche une alternative a cette ligne n=`grep $lines file_tempo | awk '{ print $3,$4 }'`
              pour l'instant la commande cut m'as bien aidé pour remplacer awk mais là j'galére....
              0
              1. ok j'essayerais en mode debug plus tard en attendant revoilà le script, j'ai mis la variable cette fois

                finger -l | grep Name |cut -d":" -f3 > temp
                who | cut -d" " -f1 | while read lines
                do
                vrainom=$(grep $lines temp | cut -d" " -f2,3)
                echo " " > who_process
                echo $vrainom >> who_process
                echo " " >> who_process
                ps -u $lines >> who_process
                done
                rm temp
                echo "List of user(s) and process running have been saved to the file who_process"
                exit

                comme dit plus haut, en gros, je cherche une alternative a cette ligne n=`grep $lines file_tempo | awk '{ print $3,$4 }'`
                pour l'instant la commande cut m'as bien aidé pour remplacer awk mais là j'galére....
                0
                1. Ca y est, j'y suis quand même arrivé, voilà le script:

                  finger -l | grep Name > temp
                  echo " " > who_process
                  who | cut -d" " -f1 | while read lines
                  do
                  grep $lines temp | cut -d":" -f3 >> who_process
                  echo " " >> who_process
                  ps -u $lines >> who_process
                  echo " " >> who_process
                  done
                  rm temp | echo "List of user(s) and process running have been saved to the file who_process"
                  exit

                  merci quand même pour votre aide, surement a bientôt, il m'en reste 1 dernier a faire, pas encore commencer qu'il me fait déjà mal la tête!

                  A+
                  0