提问者:小点点

变量中的股票查询结果并发送电子邮件


我正在尝试监视交换机的一个特定端口。 如果我的查询返回一个数字>=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

当我在terminal中执行此脚本时,我得到了以下结果:


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

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

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

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


共1个答案

匿名用户

您应该首先获得mysql查询的结果:

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

然后使用以下命令发送:

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