Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/05/2018, à 10:41

maxire

[Compris, il me semble!] xargs: ligne de commande générée en trop

Saut,

Le mieux est de montrer le résultat que j'obtiens:

[aspire7730z@asus-arch ~]$ getent passwd | awk -F : '$3 > 1000 { if ($3 != 1100)  print $6  }' 
/home/pirate
/var/lib/xdmcp
/home/poupoune
[aspire7730z@asus-arch ~]$ getent passwd | awk -F : '$3 > 1000 { if ($3 != 1100)  print $6  }' | xargs -n 1 -p /bin/cp .bashrc 
/bin/cp .bashrc /home/pirate ?...n
/bin/cp .bashrc /var/lib/xdmcp ?...n
/bin/cp .bashrc /home/poupoune ?...n
/bin/cp .bashrc ?...n
[aspire7730z@asus-arch ~]$

Je ne comprends pas.
D'où vient la dernière ligne de commande cp générée?

/bin/cp .bashrc

J'ai beau lire et relire la page man de xargs, quelque chose m'échappe.

Dernière modification par maxire (Le 17/05/2018, à 12:45)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#2 Le 17/05/2018, à 12:44

maxire

Re : [Compris, il me semble!] xargs: ligne de commande générée en trop

Je me réponds à moi-même, cela semble être un bug du à l'utilisation de l'option -p de xargs, car si je réponds  y au lieu de n tout semble fonctionner aux autorisations d'accès près!

[aspire7730z@asus-arch ~]$ getent passwd | awk -F : '$3 > 1000 { if ($3 != 1100)  print $6  }' | xargs -n 1 -p /bin/cp .bashrc 
/bin/cp .bashrc /home/pirate ?...y
/bin/cp: impossible d'évaluer '/home/pirate/.bashrc': Permission non accordée
/bin/cp .bashrc /var/lib/xdmcp ?...y
/bin/cp: impossible d'évaluer '/var/lib/xdmcp/.bashrc': Permission non accordée
/bin/cp .bashrc /home/poupoune ?...y
/bin/cp: impossible d'évaluer '/home/poupoune/.bashrc': Permission non accordée
[aspire7730z@asus-arch ~]$

Dernière modification par maxire (Le 17/05/2018, à 12:45)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#3 Le 19/05/2018, à 13:41

LeoMajor

Re : [Compris, il me semble!] xargs: ligne de commande générée en trop

bonjour,

sudo awk 'function copie(item) { cmd="cp /home/toto/scripts/hello.txt "item"/"; print cmd; while(cmd|getline tmp)print tmp;close(cmd)}; BEGIN {FS=":"}; $3==1002 {print $1,$6; copie($6)}' /etc/passwd

Hors ligne

#4 Le 16/06/2018, à 16:49

maxire

Re : [Compris, il me semble!] xargs: ligne de commande générée en trop

Finalement, une solution possible sans xargs serait:

[aspire7730z@asus-arch ~]$ getent passwd | sudo awk -F : 'function copier(home,uid,gid) { cmd="cp -v /home/aspire7730z/toto "home"/ && chown "uid":"gid" "home"/toto"; print cmd; while (cmd|getline tmp); print tmp; close(cmd) };  $3 > 1000 { if ($3 != 1100) copier($6,$3,$4)}'
cp -v /home/aspire7730z/toto /home/pirate/ && chown 1101:1101 /home/pirate/toto
'/home/aspire7730z/toto' -> '/home/pirate/toto'
cp -v /home/aspire7730z/toto /var/lib/xdmcp/ && chown 1102:1102 /var/lib/xdmcp/toto
'/home/aspire7730z/toto' -> '/var/lib/xdmcp/toto'
cp -v /home/aspire7730z/toto /home/poupoune/ && chown 1003:1004 /home/poupoune/toto
'/home/aspire7730z/toto' -> '/home/poupoune/toto'
[aspire7730z@asus-arch ~]$ sudo ls -l /home/pirate/toto
-rw-rw-r-- 1 pirate pirate 0 16 juin  17:44 /home/pirate/toto
[aspire7730z@asus-arch ~]$

Je commence à beaucoup apprécier awk, c'est assez puissant comme outil!

Merci LeoMajor.


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne