Результат запроса запаса в переменной и отправить электронное письмо - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь контролировать определенный c порт коммутатора. Мне нужно отправить электронное письмо, если мой запрос возвращает число> = 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 ($nb >= 2)

Затем, если условие истинно, отправьте письмо администратору предупреждения. Я не знаю, как получить значение в переменной и отправить по почте в скрипте bash. Если кто-то может мне помочь ... Спасибо.

1 Ответ

0 голосов
/ 09 июля 2020

Сначала вы должны получить результаты запроса mysql:

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

, а затем отправить его, используя:

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