[英]Remote execution - 2 command outputs in same line
shell#printf“ hostname
rpm -qa | grep rhncfg-actions
\\ n” usmnxbox01 rhncfg-actions-5.10.85-1.el6.noarch
我正在尝试使用下面的命令从多个主机使用ssh获取以上输出。
for i in `cat ahosts`; do ssh -t $i "printf "`hostname` `rpm -qa | grep rhncfg-actions`\n"" 2>/dev/null;done
但是我在运行此命令时得到系统的主机名。
您需要将命令替换项放在单引号中,以防止在将替换项发送到远程主机之前对其进行本地评估。 您的代码还存在其他一些问题:
for
循环遍历文件 printf
的format字符串参数中使用命令替换(如果任何替换包含百分号,都会引起问题)。 使用此代替:
while IFS= read -r i; do
ssh -t "$i" 'printf "%s %s\n" "$(hostname)" "$(rpm -qa | grep rhncfg-actions)"' < /dev/null
done < ahosts
这将从/dev/null
重定向ssh
的标准输入,以便ssh
不会错误地消耗用于read
命令的输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.