Pourquoi lorsque je lance mon script j’ai le droit à
$ ./test2
awk: cannot open bin (No such file or directory)
./test2: line 12: security: command not found
[cpp]user=cat /etc/passwd | cut -d ":" -f 1;
awk -v var=$user ‘{
for (i in $user)
do
if ($i=$3)
{
print $1;
}
done;
}’
security[/cpp]
security est mon fichier texte. Je fais une conparaison entre le 3ème champs (les login) avec ceux present dans /etc/passwd
Je sais que je pourrais faire autrement en n’utilisant pas awk mais j’aimerais l’utiliser car j’en aurais besoin pour utiliser exploitement les autres champs si l’utilisateurs n’est pas present …
Bref pourquoi la commande ne veut pas prendre en compte le fichier security qui se trouve dans le meme repertoire que mon script
Arf je n’ai pas la meme erreur. Je l’avais lancé sur une ubuntu. Voici mon erreur sous mandrake :
[cpp]# ./list
awk: cmd. ligne:2: Fatal: ne peut ouvrir le fichier « daemon » en lecture (No such file or directory)
./list: line 12: security: command not found[/cpp]
lorsque je mets ./security, cela me fais
[cpp]# ./list
awk: cmd. ligne:2: Fatal: ne peut ouvrir le fichier « daemon » en lecture (No such file or directory)
./security: line 1: Jerome: command not found
./security: line 2: Eric: command not found
[/cpp]
Jerome et Eric sont les 1er champs de mon fichier security
Lorsque je mets le chemin complet : /home/nec1/awk/security, j’ai le meme message que precedement.
Bon je viens de me rendre compte que c’est la transimission de variable avec -v val=valeur qui merdé.
Mais je n’arrive toujours pas à transmettre des variables dans awk
[cpp]
user=cat /etc/passwd | cut -d ":" -f 1;
awk -v val=“user” ‘{
for (i in val)
{
print $i
}
}’ /home/nec1/awk/security[/cpp]
lorsque je le lance, je n’arrive pas a afficher les valeurs de val. Cela n’affiche rien alors que cela devrai me donner les utilisateurs de mon systeme.
La syntaxe d’un for dans un awk est :
for (i in liste)
{
}
il faut mettre des ( ) et des { } et il ne faut pas mettre de $ pour la variable liste, si j’ai bien compris : http://www.chez.com/brunogarcia/Unix/Docs/awk.html
Pour bien identifier d’ou vient le problème, tu devrais dans un premier temps séparer l’acqisition en provenance de ton fichier /etc/passwd du reste du traitement
Fais par exemple
cat /etc/passwd | cut -d “:” -f 1 > temp_user
cela va te creer un fichier appelé temp_user qui contiendra tous les utilisateurs du système
Et dans un deuxième temps, utilise AWK avec ce fichier temp_user