繁体   English   中英

远程执行-同一行有2个命令输出

[英]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

但是我在运行此命令时得到系统的主机名。

您需要将命令替换项放在单引号中,以防止在将替换项发送到远程主机之前对其进行本地评估。 您的代码还存在其他一些问题:

  1. 使用for循环遍历文件
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM