Probleme script "qui fait quoi"

Résolu/Fermé
hugnix Messages postés 119 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 27 avril 2009 - 26 août 2007 à 00:45
hugnix Messages postés 119 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 27 avril 2009 - 29 août 2007 à 19:37
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.
A voir également:

8 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
26 août 2007 à 02:49
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
hugnix Messages postés 119 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 27 avril 2009
26 août 2007 à 20:12
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 août 2007 à 00:11
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
hugnix Messages postés 119 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 27 avril 2009
27 août 2007 à 13:03
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 août 2007 à 13:15
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
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
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
hugnix Messages postés 119 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 27 avril 2009
29 août 2007 à 19:37
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