如果此输出的左侧之一高于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,该地址应触发和电子邮件警报,该警报以“警报:有效信息”为主题发送给我。

我的bash脚本能力的程度基本上是命令组,因此我需要一些真正的帮助。

有帮助吗?

解决方案

您可以尝试以下脚本:

#!/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