質問

この出力の左側にある数値の1つが25を超えている場合、電子メールをアクティブ化して送信するアラートをセットアップしたいと思います。

私が現在の出力が私のbashスクリプトから受信します:

  3 00:05:00:E7:5A:EA
  3 00:0C:85:F2:F8:4E
  3 00:11:92:21:87:14
  3 00:17:C5:69:49:A1
  3 00:1A:E3:8C:E4:1A
  3 00:1D:A2:E7:BC:24
  3 00:26:98:14:91:05
  3 44:03:A7:C0:0D:26
 13 C0:62:6B:AE:6A:5D
 26 E8:B7:48:36:8C:AE

上記は、ケーブルプラントの最もARPエントリ(パブリックIPのみ)を備えた上位10のMACアドレスです。

例えば: 下のMACアドレスは26で、「アラート:ここで有効な情報」という件名で私に送られるアラートをトリガーして電子メールで送信する必要があります。

私のバッシュスクリプト能力の範囲は基本的にコマンドのグループなので、これについては本当の助けが必要です。

役に立ちましたか?

解決

次のスクリプトを試すことができます。

#!/bin/bash

msg=
count=0
while read line; do
    read freq mac <<< $line
    if (( $freq > 25 )) ; then 
        (( count ++ ))
        msg="$msg$line"$'\n'
    fi
done 
mail your@email.com -s "Alert: $count mac with more than 25 entries" <<< $msg

スクリプトから出力をこのスクリプトの標準入力にリダイレクトします(通常、パイプで |):your_script.sh | the_above_script.sh

ダミーメールアドレスを必ず変更してください。次に、被験者にラインカウントとボディの完全な線を含む電子メールを受け取ります。

これが私が挿入した例の例です echo 直前に mail 指図

$ cat message
  3 00:05:00:E7:5A:EA
  3 00:0C:85:F2:F8:4E
  3 00:11:92:21:87:14
  3 00:17:C5:69:49:A1
  3 00:1A:E3:8C:E4:1A
  3 00:1D:A2:E7:BC:24
  3 00:26:98:14:91:05
  3 44:03:A7:C0:0D:26
 13 C0:62:6B:AE:6A:5D
 26 E8:B7:48:36:8C:AE
$ ./t.sh < message
mail your@email.com -s Alert: 1 mac with more than 25 entries <<< 26 E8:B7:48:36:8C:AE

使用できる場合 awk, 、ここに短いソリューションがあります

< message.txt awk '{ if ($1>25) exit 1 }'  ||  mailx -s "Random Subject" myemail@mydomain.com < message.txt
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top