- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルスクリプト while のループを止めるには)
シェルスクリプトでループを止める方法
このQ&Aのポイント
- サーバAとサーバBの間でPINGの監視を行い、ネットワークが再起動し続ける問題について質問します。
- シェルスクリプトでサーバAにPINGの返答がない場合、サーバBがプライマリサーバのIPアドレスを引き継ぎますが、その後192.168.1.203にPINGを行い続ける処理が永遠に続いてしまいます。
- ネットワークが再起動し続ける問題を解決するためには、192.168.1.203にPINGの返答がなくなった場合にループを抜ける処理を追加する必要があります。
- みんなの回答 (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
お礼
回答ありがとうございます。 ご指摘頂いた通り、 do done の後に実行するコマンドを追加することにより、うまく行きました。 後、grep する文字列が間違っていました。 while [ -n "$(ping -c 1 192.168.1.203 | grep "1 received")" ] でした…。