SMS通知によるプリミティブポートモニタリング

画像



会社のサービスのリモート監視の問題は、私にとって常に非常に深刻でした。 そして、私が試しなかったもの。 Nagios、Zenoss、Zabbixなどは互いに置き換えられ、それらの機能と機能セットが印象的でした。 彼らは、昼夜をスキャンし、カバーし、監視することを約束しました。 しかし、残念ながら、これらのコンバインを設定するのに十分な時間がないため、ここで監視する必要がありました。 それである日、私は座って次のスクリプトを書きました。



操作の原理は簡単です。 スクリプトは一定時間後に実行され、Telnetはリストからリソースに接続します。 3回の「応答なし」の後、SMSが送信されます。



労働条件:

プラットフォーム-Ubuntu 11.04( 他のバージョンのLinuxで動作する可能性が最も高い )。

アラートサービス-smstools( そうでない場合は、sudo apt-get install smstools )。

USBケーブルで接続されたGSM電話。

リソースファイルビュー-ホストポート0

例えば

ya.ru 80 0

mail.ru 110 0

スクリプトを備えたコンピューターは、別のプロバイダーを介してインターネット上で検索する必要があります。



私のスクリプトは、crontabから3分ごとに実行されます。

* / 3 * * * * '/ opt / portmonitor / telneter'



以下はコード自体です。 いつものように、厳密に判断しないでください、私たち自身はプログラマーではありません。



 #!/bin/bash path=/opt/portmonitor/ logfile=/var/log/portmon fulltext=(`cat $path/ipbase.txt`) check=(`cat $path/count.txt`) rm $path/count.txt a=0 b=`expr $a + 1` e=`expr $b + 1` while [ ${fulltext[$a]} ] do send=(${fulltext[$a]}":"${fulltext[$b]}"-"'not answer 3 time') elem=("${fulltext[$a]}"\ "${fulltext[$b]}") ################subroutines#################################### bad (){ if [ "${check[$e]}" -lt "2" ];then zap[$i]=$elem ((check[$e]++)) #echo 'schetchik +:'${check[$e]} echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` elif [ "${check[$e]}" -eq "2" ];then zap[$i]=$elem ((check[$e]++)) echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt gsmsendsms -d /dev/ttyACM0 +79xxxxxxxxx "$send" gsmsendsms -d /dev/ttyACM0 +79xxxxxxxxx "$send" gsmsendsms -d /dev/ttyACM0 +79xxxxxxxxx "$send" echo "`date` $send" >>$logfile ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` else zap[$i]=$elem echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` fi } good () { zap[$i]=$elem check[$e]=0 echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` } #################endsubroutines#################################### nc -w2 -z ${fulltext[$a]} ${fulltext[$b]} && good || bad done 
      





#!/bin/bash path=/opt/portmonitor/ logfile=/var/log/portmon fulltext=(`cat $path/ipbase.txt`) check=(`cat $path/count.txt`) rm $path/count.txt a=0 b=`expr $a + 1` e=`expr $b + 1` while [ ${fulltext[$a]} ] do send=(${fulltext[$a]}":"${fulltext[$b]}"-"'not answer 3 time') elem=("${fulltext[$a]}"\ "${fulltext[$b]}") ################subroutines#################################### bad (){ if [ "${check[$e]}" -lt "2" ];then zap[$i]=$elem ((check[$e]++)) #echo 'schetchik +:'${check[$e]} echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` elif [ "${check[$e]}" -eq "2" ];then zap[$i]=$elem ((check[$e]++)) echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt gsmsendsms -d /dev/ttyACM0 +79xxxxxxxxx "$send" gsmsendsms -d /dev/ttyACM0 +79xxxxxxxxx "$send" gsmsendsms -d /dev/ttyACM0 +79xxxxxxxxx "$send" echo "`date` $send" >>$logfile ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` else zap[$i]=$elem echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` fi } good () { zap[$i]=$elem check[$e]=0 echo "${zap[$i]}"\ "${check[$e]}">>$path/count.txt ((i++)) a=`expr $a + 3` b=`expr $b + 3` e=`expr $e + 3` } #################endsubroutines#################################### nc -w2 -z ${fulltext[$a]} ${fulltext[$b]} && good || bad done







誰かが双方向性を欠いている場合、画面に一種のモニターを表示できます。



cat /opt/portmonitor/count.txtを見る



そのような統計について取得する

画像



単一のものは、これらのポートはリソースに使用できないと言います。



All Articles