Page 1 sur 1
[xargs] et retour de la sortie à la ligne [résolu et contourné]
Publié : dim. 05 mars 2017, 16:25
par falke
bonsoir
j'aimerais améliorer le script suivant qui compare deux /etc/passwd chaque fin de journée notifie les nouveaux comptes et les comptes supprimés.
Pb : pour les compte supprimés par exple les noms apparaissent sur une ligne, alors que j'aimerais que chaque compte s'affiche sur une nouvelle ligne
Code : Tout sélectionner
[!/bin/bash
echo "comptes supprimés: "
diff passwd_avant.unl passwd_apres.unl | grep "<" | xargs
echo "comptes ajoutés : "
diff passw_avant.unl uti_passwd_apres.unl | grep ">" | xargs
/code]
merci pour votre aide
Re: [xargs] et retour de la sortie à la ligne
Publié : dim. 05 mars 2017, 18:24
par falke
j'ai trouvé la sortie de chaque ligne comprenant
soit :
> login autre_champ (3 arguments)
en faisant (pour les ajouts par exple)
diff passw_avant.unl uti_passwd_apres.unl | grep ">" | xargs -n3
j'obtiens à chaque fois une ligne avec ces trois arguments
merci
Re: [xargs] et retour de la sortie à la ligne
Publié : dim. 05 mars 2017, 19:06
par benjarobin
Ceci n'est pas mieux :
Code : Tout sélectionner
comm -13 <(grep -Eo "^[^:]+" /etc/passwd.old | sort -u) <(grep -Eo "^[^:]+" /etc/passwd | sort -u) | while read user ; do
echo "comptes supprimés: $user"
done
comm -23 <(grep -Eo "^[^:]+" /etc/passwd.old | sort -u) <(grep -Eo "^[^:]+" /etc/passwd | sort -u) | while read user ; do
echo "comptes ajoutés: $user"
done
Personnellement la plupart du temps je préfère une boucle while que d'utiliser xargs
Re: [xargs] et retour de la sortie à la ligne
Publié : lun. 06 mars 2017, 18:10
par falke
salut benjarobin,
j'ai déjà vu cette commande comm sans la comprendre.
pourrais tu brièvement expliquer ce qu'elle fait ?
Re: [xargs] et retour de la sortie à la ligne
Publié : lun. 06 mars 2017, 18:32
par benjarobin
Re: [xargs] et retour de la sortie à la ligne
Publié : lun. 06 mars 2017, 19:13
par falke
ah une doc en français.
où est-ce qu'on peu la trouver pour l'installer sur son système ?
Re: [xargs] et retour de la sortie à la ligne
Publié : lun. 06 mars 2017, 19:26
par benjarobin
Les docs en français sont à proscrire car non à jour, et pas assez détaillé, l'anglais est bien plus clair et précis...
Sinon je ne sais plus si le paquet des man pages fr existe toujours...
Re: [xargs] et retour de la sortie à la ligne
Publié : mar. 07 mars 2017, 11:00
par falke
rebonjour robin,
j'ai testé cette commande en réel. C'est ultra -puissant, merci beaucoup. Evite un gros diff bien lourd.
Juste deux remarques :
Par contre la sortie est l'inverse de ce qui est attendu, j'ai adapté
j'ai testé de la sorte aussi :
echo "comptes ajoutés"
comm -13 ./passwd.old ./passwd.new
echo "comptes supprimés"
comm -23 ./passwd.old ./passwd.new
ça me sort la liste sans avoir besoin du while read user echo $user
ce qui simplifie encore plus.