【问题标题】:Stock query result in variable and send email股票查询结果变量并发送电子邮件
【发布时间】:2020-07-09 12:45:44
【问题描述】:

我正在尝试监控交换机的特定端口。如果我的查询返回的数字 >= 2,我必须发送电子邮件。

我已经测试了我的查询,它可以在 Mysql CLI 中运行:

SELECT COUNT(message)
FROM devices, eventlog WHERE sysName = 'sysName' 
AND message = 'ifOperStatus: up -> down' 
AND datetime >= now() - INTERVAL 15 MINUTE

此查询返回正确的值。所以,我决定创建一个脚本来执行查询并获取信息:

#!/usr/bin/bash

mysql -u DB_USER -p PASSWORD DB_NAME <<MY_QUERY

SELECT COUNT(message)
FROM devices, eventlog WHERE sysName = 'swysName' 
AND message = 'ifOperStatus: up -> down' 
AND datetime >= now() - INTERVAL 15 MINUTE

MY_QUERY

当我在终端执行这个脚本时,我得到了这个:


librenms@librenms:/opt/librenms/scripts$ bash -x test1.sh
+ mysql -u DB_USER '-p PASSWORD' DB_NAME
COUNT(message)
0

现在我必须在一个变量中获取查询的值,并在脚本中使用“if”作为测试变量:

....
if ($nb >= 2)

然后,如果条件为真,则向警报管理员发送邮件。 我不知道如何在变量中获取值并在 bash 脚本中通过邮件发送。如果有人可以帮助我... 谢谢。

【问题讨论】:

    标签: mysql bash monitoring


    【解决方案1】:

    你应该先得到mysql查询的结果:

    RES = $(mysql -u DB_USER -p PASSWORD DB_NAME <<$MY_QUERY)
    

    然后使用:

    echo $RES | mail -s "Information" email@email.com
    

    【讨论】:

    • 感谢您的回答。我会试试。如果测试为真,如何测试 $RES 并发送邮件的想法?比如 if ($RES >= 2)
    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多