centos - shellscript 循环执行代码,但是每次执行一次以后就退出了?
过去多啦不再A梦
过去多啦不再A梦 2017-04-25 09:01:06
0
4
813
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互信

执行那个后发现每次只能关闭一台机器脚本就退出了。需要再次执行才能关闭后面的机器,请问是为什么?谢谢

过去多啦不再A梦
过去多啦不再A梦

全員に返信(4)
淡淡烟草味

次のようにこの行を書いてみてください: ssh root@$HOSTNAME "poweroff" <

いいねを押す +0
漂亮男人

またはssh -nと書きます。この問題が発生する理由は、ssh が標準入力の残りの部分を読み取るためです。

そのため、データを読み取るために while + リダイレクトを使用しないようにしています。読み取りたい場合は、別のファイル記述子も使用して読み取ります。 stdin は他のコマンドで簡単に読み取ることができます。

いいねを押す +0
黄舟

perl -ne 'system q/ssh/, q/root@/.$_,q/poweroff/' host.log #これで問題ないはずです

いいねを押す +0
刘奇

読み取り中に$を削除してください$

HOSTNAME

ホスト名の読み取り中
する
ssh root@$HOSTNAME "poweroff"
完了

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!