2017-10-04 14 views
0

同じIPが同じポートに接続されているLinuxサーバに接続することを監視しようとしています。特定のIPアドレスを監視して、2回存在しない場合にのみ警告することは可能ですか?シェルスクリプトモニタ同じIPを持つ複数の接続

例:

のnetstat -an | grepを000

101.101.101.101:2000  ESTABLISHED 
101.101.101.101:2000  ESTABLISHED 
101.101.101.102:3000  ESTABLISHED 
101.101.101.102:3000  ESTABLISHED 

私は101.101.101.101または101.101.102は関係なく、ポートの2回、それぞれを終了していない場合に警告したいと思います。

マイスクリプト:

connections=('101.101.101.101' '101.101.101.102') 
running=($(netstat -an |grep 000 |awk '{print $1}')) 
non_running=() 
for process_name in ${connections[@]}; do 
    if [[ "${running[*]}" == *$process_name* ]]; then 
     echo "$process_name is running" 
    else 
     echo "$process_name is not running" 
    fi 
done 

答えて

0

次のスクリプトは同じであなたを助けることができます。

netstat -an | awk -v s1="\"" ' 
function check(ip,count,email_id){ 
    if(count<2){ 
    system("echo " s1 "IP " ip " 2 count not found." s1 " | mailx -s " s1 " Alert email IP " ip " 2 times occurence not found." s1 FS email_id) 
} 
    else{ 
    print ip " is running fine."} 
} 
/101.101.101.101/{ 
    count1++ 
} 
/101.101.101.102/{ 
    count2++ 
} 
END{ 
    check(101.101.101.101,count1,"[email protected]"); 
    check(101.101.101.102,count2,"[email protected]") 
} 
' 

説明:だから、コマンドnetstat -anを実行し、それがawkコマンドの標準入力として標準出力です入れます。 awkコマンドでcheckという名前のfunctionが作成されていれば、任意のIP(標準入力が読み込まれている間にカウントをチェックする必要があります)と呼ぶことができるので、ENDブロックのawkでは、それに渡されたeg--> check(IP,count_variable,your_email_where_you_want_to_alert)。すべてがうまくいれば(その変数の数が2以上であることを意味します。カウント2だけ必要な場合は、コードの条件を上記のcount==2に変更します)それ以外の場合は、機能するために提供する電子メールを送信します。

+0

ありがとう@ RavinderSingh13あなたの提案を使用しましたが、両方のIPアドレスがダウンしている場合は、いずれかの警告のみが電子メールアラートに表示されます。私は両方がダウンしている場合両方に警告する方法を把握することができませんでした。また、私は追加する必要があります、最初のIPは2回存在する必要があり、2番目のIPは4回存在する必要があります。 10.101.101.101が2つ未満であればアラートを、4つ未満の場合に10.101.101.102のアラートが存在するかどうかを警告する簡単なソリューションはありますか?ありがとう!! – connollyc4

+0

@ connollyc4、ここで私がカウント<2を述べた条件、あなたはカウント<4に変更することができます。また、それは私のために働いた私は私のIPのためにテストしたときに2つの電子メールを持っていることを確認してくださいあなたのIPは2よりも少ないカウントを持っていることを確認してください。 – RavinderSingh13

関連する問題