Probleme script "qui fait quoi"

Résolu
hugnix Messages postés 129 Date d'inscription   Statut Membre -  
hugnix Messages postés 129 Date d'inscription   Statut Membre -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  2. hugnix Messages postés 129 Date d'inscription   Statut Membre
     
    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
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  4. hugnix Messages postés 129 Date d'inscription   Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  7. hugnix
     
    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
  8. hugnix
     
    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
  9. hugnix Messages postés 129 Date d'inscription   Statut Membre
     
    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