Isso porque echo && hostname && df -h | grep /usr
é tratado como um único comando, use isso:
'awk '{print "ssh -q " $1 " bash -c \"echo && hostname && df -h | grep /usr\";"}' essentials'
'awk '{print "ssh -q " $1 " \"echo && hostname && df -h | grep /usr\";"}' essentials'
Ele deve se conectar a um monte de nomes de host do arquivo "essentials" e ecoar o uso de espaço em disco. Se eu me livrar dos carrapatos, você pode ver o que está sendo executado:
ssh -q hostname1 "echo && hostname && df -h | grep /usr";
ssh -q hostname2 "echo && hostname && df -h | grep /usr";
ssh -q hostname3 "echo && hostname && df -h | grep /usr";
Saída real:
-bash-3.2$ 'awk '{print "ssh -q " $1 " \"echo && hostname && df -h | grep /usr\";"}' essentials'
bash: echo && hostname && df -h | grep /usr: No such file or directory
hostname2
/dev/xvda3 23G 13G 9.2G 59% /usr
hostname3
/dev/xvda3 23G 1.5G 21G 7% /usr
Alguma idéia de por que o primeiro comando não funciona?
xargs --arg-file essentials -I {} ssh -q \{\} bash -c "echo && hostname && df -h | grep /usr"