• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプト while のループを止めるには)

シェルスクリプトでループを止める方法

このQ&Aのポイント
  • サーバAとサーバBの間でPINGの監視を行い、ネットワークが再起動し続ける問題について質問します。
  • シェルスクリプトでサーバAにPINGの返答がない場合、サーバBがプライマリサーバのIPアドレスを引き継ぎますが、その後192.168.1.203にPINGを行い続ける処理が永遠に続いてしまいます。
  • ネットワークが再起動し続ける問題を解決するためには、192.168.1.203にPINGの返答がなくなった場合にループを抜ける処理を追加する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

何をしたいのか今ひとつわかりませんが(条件が逆では?)、 >#ping にて 100% loss があった場合は、コマンド実行です。 >#返答があった場合は、そのまま ping させ続けます。 ということであれば、 while [ -n "$(ping -c 1 192.168.1.203 | grep 100%)" ] do : done echo "Primary server comes back" /etc/init.d/networking restart

mintroyale
質問者

お礼

回答ありがとうございます。 ご指摘頂いた通り、 do done の後に実行するコマンドを追加することにより、うまく行きました。 後、grep する文字列が間違っていました。 while [ -n "$(ping -c 1 192.168.1.203 | grep "1 received")" ] でした…。

関連するQ&A