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