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. 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
    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. 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. 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
              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,

                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,

                  ç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