以下の「for」ループは同じサーバー上でローカルに実行されます。
ただし、リモートサーバーで「ssh」プロトコルを介してトリガーされた場合、出力は受信されません。
リモートサーバーでトリガーされたときに機能させる方法を提案できる人はいますか?
for i in $(cat Server_List) # Works
do # Works
echo $i # Works
ssh $i '$(for a in `/usr/sbin/lspath|grep scsi|awk '{print \$2}'|sort|uniq`; # Doesn't Work
do # Doesn't Work
echo "\$a `/usr/sbin/lspath |awk '/'\$a' /' |uniq|awk '/Enabled/'|wc -l`;done)' # Doesn't Work
done # Works
答え1
heredoc
SSHを介して複数行コマンドを実行できます。
ssh user@host <<'EOC'
for a in $(/usr/sbin/lspath | awk '/scsi/ {print $2}'| sort -u); do
# do something
done
EOC