Дело в том, что однажды захотелось знать, а отработало ли задание о перезагрузке базовых станций, думаю что приход сообщения на электронную почту от специально созданного для этой цели почтового ящика, чтобы уже наверняка понимать — от куда это письмо и что с ним связано.
В моем случае, все задания о ежедневной перезагруке базовых станций, как Grandstream так и D-Link настроены на сервисе который предоставляет мне полную информацию по рабочим станциям, а раз по большей части данный сервер с этим сервисом GLPI простаивает, то нагрузить его заданиями особого затруднения не составляет.
root@srv-glpi:~# crontab -e
59 23 * * * /etc/voip/dvg2024s_22 > /dev/null
59 23 * * * /etc/voip/dvg2024s_23 > /dev/null
59 23 * * * /etc/voip/dvg5058sg_20 > /dev/null
59 23 * * * /etc/voip/dvg5058sg_21 > /dev/null
59 23 * * * /etc/voip/gg715_108 > /dev/null
и т.д.
Задача: дополнить скрипт перезагрузки базовых станции Grandstream отправкой уведомления на мой почтовый ящик, что станция отправлена в перезагрузку.
Запускаю скрипт о перезагрузке, вижу лог — и хотелось бы видеть и на почте точно такое же ли хотя бы простое уведомление, что станция отправлена в перезагрузку.
aollo@srv-glpi:~$ sudo /etc/voip/gg715_119
spawn telnet 10.7.8.119
Trying 10.7.8.119…
Connected to 10.7.8.119.
Escape character is ‘^]’.
Grandstream DP715 Command Shell Copyright 2006-2014
Password:
GS> reboot
Base Station Grandstream GP715 – 10.7.8.119 Rebooting
Специально для данной задачи создал почтовый ящик для сервере srv-glpi:
glpi-report@nemdom.ru
Pass:<Специальный_пароль>
Далее нужно на систему поставить MTA агент — к примеру такой как ssmtp — с ним у меня только положительные моменты использования, да и прост он в настройке:
aollo@srv-glpi:~$ sudo apt-get install ssmtp mailutils -y
aollo@srv-glpi:~$ sudo nano /etc/ssmtp/ssmtp.conf
root=glpi-report@nemdom.ru
mailhub=<мой_почтовый_сервер:587>
rewriteDomain=nemdom.ru
UseSTARTTLS=Yes
AuthUser=glpi-report@nemdom.ru
AuthPass=<Специальный_пароль>
FromLineOvveride=yes
Настраиваю, кто может из локальных пользователей системы задействовать MTA агент для отправки почты:
aollo@srv-glpi:~$ sudo nano /etc/ssmtp/revaliases
root:glpi-report@nemdom.ru:<мой_почтовый_сервер:587>
aollo:glpi-report@nemdom.ru:<мой_почтовый_сервер:587>
Пробую отправить тестовое сообщение:
aollo@srv-glpi:~$ echo test | ssmtp -v -s "Hello" alexander.ollo@nemdom.ru
[<-] 220 mail.newmail.ru ESMTP Postfix
[->] EHLO srv-glpi
[<-] 250 DSN
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO srv-glpi
[<-] 250 DSN
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] Z2xwaS1yZXBvcnQ=
[<-] 334 UGFzc3dvcmQ6
[<-] 235 2.7.0 Authentication successful
[->] MAIL FROM:<glpi-report@nemdom.ru>
[<-] 250 2.1.0 Ok
[->] RCPT TO:<Hello@nemdom.ru>
[<-] 250 2.1.5 Ok
[->] RCPT TO:<alexander.ollo@nemdom.ru>
[<-] 250 2.1.5 Ok
[->] DATA
[<-] 354 End data with <CR><LF>.<CR><LF>
[->] Received: by srv-glpi (sSMTP sendmail emulation); Sat, 07 Nov 2015 12:19:14 +0300
[->] From: “aollo” <glpi-report@nemdom.ru>
[->] Date: Sat, 07 Nov 2015 12:19:14 +0300
[->] test
[->]
[->] .
[<-] 250 2.0.0 Ok: queued as BAE1618AF831
[->] QUIT
[<-] 221 2.0.0 Bye
Если такой отчет присутствует, значит конфигурационный файл ssmtp.conf настроен правильно.
Далее проверяю, а что у меня в почтовом ящике красуется?
Теперь мне надо добавить возможность добавления в отправку письма «Тему» сообщения и шаблон на конкретный скрипт тела сообщения:
aollo@srv-glpi:~$ whereis ssmtp
ssmtp: /usr/sbin/ssmtp /etc/ssmtp /usr/share/man/man8/ssmtp.8.gz
aollo@srv-glpi:~$ ssmtp -t <<EOF
To: alexander.ollo@nemdom.ru
Date: $(date -R)
Subject: Just this test
This is a test from ssmtp on Ubuntu 12.04.5 Server
EOF
Что теперь в почтовом клиенте Thunderbird отображается?:
Отлично, то что надо.
А вот теперь как это все оформить одной строкой, cоздаю файл с атрибутами составляемого письма:
aollo@srv-glpi:~$ nano msg.txt
To: alexander.ollo@nemdom.ru
Subject: Just this test
This is a test from ssmtp on Ubuntu 12.04.5 Server
После запускаю утилиту с приложением файла составленного заранее письма.
aollo@srv-glpi:~$ ssmtp alexander.ollo@nemdom.ru < msg.txt
В итоге:
Чтобы вывести текущую дату полностью, пригодится для добавления в тему сообщения:
aollo@srv-glpi:~$ echo "$(date --date "yesterday")"
Fri Nov 6 12:32:15 MSK 2015
Теперь когда все протестировано, дополняю файл скрипта отправкой отчета на почту о результатах выполнения:
aollo@srv-glpi:~$ sudo nano /etc/voip/gg715_119
#!/bin/bash
/usr/bin/expect - <<EOD
set timeout 10
spawn telnet 10.7.8.119
sleep 2
expect "Password:*"
sleep 2
send "admin\r"
expect "GS>*"
send "reboot\r"
sleep 1
send "exit\r"
expect eof
EOD
echo "$(date --date "yesterday") Base Station Grandstream GP715 - 10.7.8.119 Rebooting"
echo "To: alexander.ollo@nemdom.ru" > /etc/voip/gg715_119.msg
echo "Subject: $(date --date "yesterday") Base Station Grandstream GP715 - 10.7.8.119 Rebooting" >> /etc/voip/gg715_119.msg
echo "Base Station Grandstream GP715 - 10.7.8.119 Rebooting po cron" >> /etc/voip/gg715_119.msg
/usr/sbin/ssmtp alexander.ollo@nemdom.ru < /etc/voip/gg715_119.msg
rm /etc/voip/gg715_119.msg
Запускаю:
aollo@srv-glpi:~$ sudo /etc/voip/gg715_119
spawn telnet 10.7.8.119
Trying 10.7.8.119…
Connected to 10.7.8.119.
Escape character is ‘^]’.
Grandstream DP715 Command Shell Copyright 2006-2014
Password:
GS> reboot
Fri Nov 6 14:53:03 MSK 2015 Base Station Grandstream GP715 – 10.7.8.119 Rebooting
Отлично, а на почту приходит вот такое вот письмо:
Вот то что мне и нужно было. Заметка работоспособна. И пока для текущего использования мне подходит. На этом всё, с уважением — автор блога, ekzorchik.