ホストの可用性を確認するためのbashpingスクリプトファイル

実行すると、ホストが利用可能になるまでpingを開始するbashスクリプトをファイルに書き込もうとしています。 、ホストが到達可能になると、コマンドを実行して実行を停止します。コマンドを書き込もうとしましたが、カウントが終了するまでスクリプトはpingを続行します。

さらに、そのプロセスをバックグラウンドに置く必要がありますが、ドル($)記号が付いたスクリプトは、引き続きフォアグラウンドで実行されます。

#!/bin/bash ping -c30 -i3 192.168.137.163 if [ $? -eq 0 ] then /root/scripts/test1.sh exit 0 else echo “fail” fi 

回答

これを使用します。単純なワンライナーです:

while ! ping -c1 HOSTNAME &>/dev/null; do echo "Ping Fail - `date`"; done ; echo "Host Found - `date`" ; /root/scripts/test1.sh 

pingしようとしているホストを使用します。


バックグラウンドに配置する部分を見逃しました。その行を次のようにシェルスクリプトに配置します:

#!/bin/sh while ! ping -c1 $1 &>/dev/null do echo "Ping Fail - `date`" done echo "Host Found - `date`" /root/scripts/test1.sh 

そして、バックグラウンドで次のように実行します。

nohup ./networktest.sh HOSTNAME > /tmp/networktest.out 2>&1 & 

もう一度

pingしようとしているホストを使用します。このアプローチでは、ホスト名を引数としてシェルスクリプトに渡します。

一般的な警告として、ホストがダウンしたままの場合、このスクリプトは、強制終了するか、強制終了するまで、バックグラウンドで継続的にpingを実行します。ホストが見つかりました。だから、これを実行するときはそれを覚えておきます。これを忘れると、システムリソースを消費してしまう可能性があるためです。

コメント

  • 回答と警告のTnxは、視覚化された環境です。したがって、スクリプトは物理サーバーの起動後に開始されるため、VM 'は確実に開始されますが、VMを削除した場合は、tnxを再度実行することに注意してください
  • 特に、毎回障害をログに記録し、すべての出力を/tmpのファイルに保存することで、ホストがダウンした場合に' ll最終的に/tmpに入力されます。それは悪いニュースになる傾向があります…

回答

パラメータ「-c30」をに渡すことによってping、30pingを試行して停止します。コマンドが成功したかどうかを確認します。 1つのpingを含むループを実行し、このpingが成功するかどうかを確認するのが最善だと思います。そのようなもの:

while true; do ping -c1 google.com if [ $? -eq 0 ] then /root/scripts/test1.sh exit 0 fi done 

フォアグラウンドで実行している場合は、ターミナルで印刷していることを意味する場合は、stdinとstdoutを/ devにリダイレクトできます。 / null。

コメント

  • プロンプトのロックを解除して、他の作業ができるようにします。tnxでヘルプを表示します

回答

古い投稿ですが、提案として、pingで-wオプションを使用できます。ループを避けてください。たとえば、

ping -w 30 -c 1 host 

は1秒あたり1回のpingで30秒間試行し(デフォルトのpingではpingの間隔が1秒)、最初に成功したpingで終了します。 。

タイムアウトが必要ない場合、つまり永遠に待つ場合は、-wで非常に大きな値を使用します。

回答

ping -oc 100000 Hostname > /dev/null && /root/scripts/test1.sh 
  • ping -o

最初のパケットを受信した後

  • > /dev/nullは出力をリダイレクトするため、表示されません
  • &&は、前のコマンドが成功した場合、次のコマンドを実行します
  • さらに、バックグラウンドで任意のプロセスを実行できます。最後に&を追加します。たとえば、echo "123" &はバックグラウンドで実行されます

    回答

    ここで機能していますスクリプトの変更。

    #!/bin/bash ping -c1 10.1.1.23 > /dev/null if [ $? -eq 0 ] then echo ok exit 0 else echo “fail” fi 

    出力を/dev/nullに送信して、に表示されないようにする必要があります。画面。

    -cはカウント用です。-c30を入力すると、ping30になります。スクリプトが次の行に移動できるようになるまでの時間。 -c1を使用して、スクリプトの実行速度を上げています。

    -iは、各パケットを送信するまで数秒待つことです。したがって、-i3は3秒間待機します。スクリプトの実行を高速化するために、-iを削除しました。

    最後に重要なことですが、コードが見栄えがよく読みやすいようにインデントを使用します。

    サンプル出力

    user@linux:~$ ./script.sh ok user@linux:~$ user@linux:~$ ./script.sh “fail” user@linux:~$ 

    回答

    #!/bin/sh if [ $1 ] then for i in ` cat $1` do VAR1=$(ping -ac 2 $i| grep -c error) if [ $VAR1 == "0" ] then echo " valid : $i" else echo " invalid : $i" fi done else echo " please present the file name. example: pong /tmp/a " fi 

    コメント

    • 必要な場合もあります説明する単語を追加するには…?

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です