Mysqlデータベースで見つかったIPのリストをbashからpingするにはどうすればよいですか?
これらのフィールドを含むnicsというテーブルがあります。
監視アプリ(ICMPメッセージを使用して生きているホストを取得する部分)を作成した方法を次に示します。私の場合、mysqlサーバー(MariaDB)はアプリと同じマシンで実行されています。
このcronでは、2つのフィールド(ipv4とicmp)のみを使用します。 icmpフィールドは、このNICを監視するかどうかを決定するために使用されます。
スクリプトは次のとおりです。
#!/bin/bash
#variables
SQL_U=username
SQL_P=password
SQL_D=database
mysql -u ${SQL_U} -p${SQL_P} -D ${SQL_D} -e "SELECT ipv4 FROM nics WHERE icmp=1;" | while IFS=$'\t' read ipv4;
do
if [ "$ipv4" != "ipv4" ]; then
PING_IP=$ipv4
PING_LOSS=0
PING_TEST=$(fping -c 1 -p 20 ${PING_IP} | awk '{ print $1 }')
if [ "$PING_TEST" = "$PING_IP" ]; then
PING_LOSS=1
fi
PING_C=$(date +"%Y-%m-%d %H:%M:%S")
mysql -u ${SQL_U} -p${SQL_P} -D ${SQL_D} -e "INSERT INTO ping (ipv4, loss, created, modified) VALUES ('${PING_IP}', '${PING_LOSS}', '${PING_C}', '${PING_C}');"
fi
done
すべての結果は、pingと呼ばれるテーブルに挿入されます。 IPを挿入すると、pingの結果がバイナリ(0 =損失、1 =受信)になり、作成日と変更日が決まります。このスクリプトを使用すると、5分ごとに約100 ips(現時点では)を監視して統計を収集できます。Debianストレッチマシンでpingの代わりにfpingを使用していることに注意してください。多くの機能があるため。