2016-04-11 17 views
0

bash forループを使用して複数のマシンにsshを実行すると、hostname変数はsshしたマシンの名前に更新されません。Bash ssh forループ - env変数の問題

私はここで何が欠けていますか?

"A"、 "B"、 "C"は、実際のマシンの名前と置き換えられ、実際の実行では削除されます。

for node in "A" "B" "C" ; 
do 
    ssh $node "echo $node $HOSTNAME is alive" ; 
done 

上記の例では、$ nodeは正しく出力されていますが、$ HOSTNAMEはSSHのマシン名です。

答えて

2

使用単一引用符:

for node in "A" "B" "C" ; 
do 
    ssh $node 'echo $HOSTNAME is alive'; 
done 

あなたが$nodeを渡す必要がある場合は、

ssh [email protected] 'echo ' $node ' $HOSTNAME is alive' 

あなたは二重引用符を使用する場合は、リモートマシンに現在のマシンのホスト名の値を渡しています。

+0

@IanWatsonこの回答が問題の解決に役立つ場合は、投票の矢印の下の左のチェックマーク(チェックマーク)をクリックして回答を受け入れてください(http://meta.stackoverflow.com/questions/251078/how-to - 更新 - および承認 - 回答) – sat