Eu recebo um erro estranho do seguinte comando awk no linux

1
'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?

    
por Nick 25.08.2010 / 01:13

2 respostas

3

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'
    
por 25.08.2010 / 02:02
1
xargs --arg-file essentials -I {} ssh -q \{\} bash -c "echo && hostname && df -h | grep /usr"
    
por 25.08.2010 / 03:36

Tags