検索

ホームページ  >  に質問  >  本文

centos - shellscript 循环执行代码,但是每次执行一次以后就退出了?

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梦2860日前911

全員に返信(4)返信します

  • 淡淡烟草味

    淡淡烟草味2017-04-25 09:03:06

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

    返事
    0
  • 漂亮男人

    漂亮男人2017-04-25 09:03:06

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

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

    返事
    0
  • 黄舟

    黄舟2017-04-25 09:03:06

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

    返事
    0
  • 怪我咯

    怪我咯2017-04-25 09:03:06

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

    HOSTNAME

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

    返事
    0
  • キャンセル返事