簡體   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