【问题标题】:Creating Email Alerts based on thresholds in bash [closed]根据 bash 中的阈值创建电子邮件警报 [关闭]
【发布时间】:2013-11-06 22:17:25
【问题描述】:

如果此输出左侧的数字之一高于 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,这应该会触发并通过电子邮件向我发送主题为“Alert: Valid Info Here”的电子邮件警报

我的 bash 脚本能力基本上是一组命令,所以我需要一些真正的帮助。

【问题讨论】:

  • 你没有真正的监控系统?

标签: perl bash shell sed threshold


【解决方案1】:

你可以试试下面的脚本:

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

确保更改虚拟电子邮件地址。然后,您将收到一封电子邮件,其中包含主题中的行数和正文中的完整行。

这是一个运行示例,我在 mail 命令之前插入了一个 echo

$ 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

【讨论】:

  • 嗯,我做了一个测试,只是将该数据添加到一个 txt 文件并将其通过管道传输到这个脚本中。有一台设备的条目超过 25 个,但它没有报告。我还想知道是否可以将它包含在我当前脚本的末尾,并让它通过电子邮件发送与通常相同的输出,但前提是其中一个疯狂的地址超过 25 个。
  • 有什么办法可以简化一下,只要说是否有任何大于 25 的数字作为任何行的第一个单词 "cat message.txt | mailx -s "Random Subject" myemail @mydomain.com”。 Message.txt 是要检查的文件 > 25 和通过电子邮件发送的输出。
  • 您可以使用awk 缩短它。我已经更新了我的答案。
  • 使用 awk 效果很好,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
相关资源
最近更新 更多