1
`awk '{print "ssh -q " $1 " \"echo && hostname && df -h | grep /usr\";"}' essentials`

Предполагается подключиться к группе имен хостов из файла "essentials" и отразить использование их дискового пространства. Если я избавлюсь от обратных тиков, вы увидите, что выполняется:

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";

Фактический вывод:

-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

Есть идеи, почему эта первая команда не работает?

2 ответа2

3

Это потому, что echo && hostname && df -h | grep /usr рассматривается как одна команда, используйте вместо этого:

`awk '{print "ssh -q " $1 " bash -c \"echo && hostname && df -h | grep /usr\";"}' essentials`
1
xargs --arg-file essentials -I {} ssh -q \{\} bash -c "echo && hostname && df -h | grep /usr"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .