ping用のbashスクリプトの作成

ping用のbashスクリプトの作成

こんにちは。次のコマンド ping -c 4 -i "IP"を3回実行するbashスクリプトが必要です。各Pingは10分間隔で実行する必要があり、3回失敗した場合にのみ電子メールが送信されます。助けてください?

前任者。

ping -c 4 -i X.X.X.X

実行タイプ:ping最初にすべてのパケットが失われた場合は、10分間待ってからpingコマンドを再実行してください。それでも失敗した場合は、最後のpingコマンドを実行してください。

#!/bin/bash
HOSTS="X.X.X.X"

pingtest(){
  for myHost in "$@"
  do
    ping -c 4 -i 5 $HOSTS && return 1
  done
  return 0
}

if pingtest $HOSTS
then
  # 100% failed
  echo "Server failed" | mail -s "Server Down" [email protected]

fi

しかし、これを3回繰り返し、パケット損失が失敗した後に電子メールを送信する方法は何ですか?ありがとう

ベストアンサー1

外部プログラムの使用が許可されている場合は、次のものを使用できます。IPモニタリング。 Cで書かれており、非常に設定可能です。継続的に繰り返し実行されているbashスクリプトまたはcronジョブとは異なり、ping1%未満のCPU時間を消費しながら、毎秒100個のpingを実行できます。

たとえば、次のように使用できます。

sudo ./monitor-ip --interval 5.0 --missed-max 20 --reset -- 1.2.3.4 \
        bash -c 'mail -s "Server Down!" [email protected] <<< "$MONITOR_NOTIFY_REMOTE_ADDRESS unreachable"'

1.2.3.420個の連続フォンが受信されなくなるまで(1分のダウンタイム)、5秒間隔でpingを送信し、次のアドレスに電子メールを送信します。[Eメール保護]。ステータス条件が解決されるまで、1分間隔で電子メールを送信し続けます。

完全な公開:私が書いたIPモニタリング

おすすめ記事