[xargs] et retour de la sortie à la ligne [résolu et contourné]

Applications, problèmes de configuration réseau
falke
Chu Ko Nu
Messages : 416
Inscription : ven. 02 mars 2012, 19:24
Localisation : Grenoble

[xargs] et retour de la sortie à la ligne [résolu et contourné]

Message 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
Dernière modification par falke le mar. 07 mars 2017, 21:13, modifié 1 fois.
falke
Chu Ko Nu
Messages : 416
Inscription : ven. 02 mars 2012, 19:24
Localisation : Grenoble

Re: [xargs] et retour de la sortie à la ligne

Message 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
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [xargs] et retour de la sortie à la ligne

Message 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
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
falke
Chu Ko Nu
Messages : 416
Inscription : ven. 02 mars 2012, 19:24
Localisation : Grenoble

Re: [xargs] et retour de la sortie à la ligne

Message par falke »

salut benjarobin,

j'ai déjà vu cette commande comm sans la comprendre.

pourrais tu brièvement expliquer ce qu'elle fait ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [xargs] et retour de la sortie à la ligne

Message par benjarobin »

Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
falke
Chu Ko Nu
Messages : 416
Inscription : ven. 02 mars 2012, 19:24
Localisation : Grenoble

Re: [xargs] et retour de la sortie à la ligne

Message par falke »

ah une doc en français.

où est-ce qu'on peu la trouver pour l'installer sur son système ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [xargs] et retour de la sortie à la ligne

Message 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...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
falke
Chu Ko Nu
Messages : 416
Inscription : ven. 02 mars 2012, 19:24
Localisation : Grenoble

Re: [xargs] et retour de la sortie à la ligne

Message 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.
Répondre