while read $HOSTNAME do ssh root@$HOSTNAME "poweroff" done < host.log
host.log 中的內容: 192.168.122.1 192.168.122.2 192.168.122.3
機器配置過ssh互信
執行那個後發現每次只能關掉一台機器腳本就退出了。需要再次執行才能關閉後面的機器,請問是為什麼?謝謝
在這行寫成這樣試試: ssh root@$HOSTNAME "poweroff"
或寫 ssh -n 吧。出現這種情況的原因是,ssh 讀取了你餘下的 stdin。
ssh -n
所以我盡量不使用 while + 重定向讀取數據,要讀也用另外的文件描述符來讀。 stdin 很容易被別的指令讀走的。
perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/' host.log #這樣該可以
去掉while read $HOSTNAME中的$
while read HOSTNAME do ssh root@$HOSTNAME "poweroff" done
在這行寫成這樣試試: ssh root@$HOSTNAME "poweroff"
或寫
ssh -n
吧。出現這種情況的原因是,ssh 讀取了你餘下的 stdin。所以我盡量不使用 while + 重定向讀取數據,要讀也用另外的文件描述符來讀。 stdin 很容易被別的指令讀走的。
perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/' host.log #這樣該可以
去掉while read $HOSTNAME中的$
while read HOSTNAME
do
ssh root@$HOSTNAME "poweroff"
done