`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
知道为什么第一个命令不起作用吗?
答案1
这是因为echo && hostname && df -h | grep /usr
它被视为单个命令,所以请使用以下命令:
`awk '{print "ssh -q " $1 " bash -c \"echo && hostname && df -h | grep /usr\";"}' essentials`
答案2
xargs --arg-file essentials -I {} ssh -q \{\} bash -c "echo && hostname && df -h | grep /usr"