У меня дома есть Ubuntu 10.04, который работает круглосуточно. Недавно я заметил, что машина иногда перезагружается сама по себе (примерно раз в месяц). Я хотел бы настроить этот сервер так, чтобы получать электронную почту каждый раз при запуске сервера. Я хотел бы получать электронную почту на свой аккаунт gmail, и я настрою еще один аккаунт gmail, чтобы сервер мог отправлять электронные письма (при необходимости).
В качестве дополнительного бонуса было бы здорово, если бы электронное письмо содержало какую-либо диагностическую информацию, касающуюся причины сбоя и перезапуска сервера.
Спасибо
решение1
Я вижу как минимум два возможных варианта:
- Добавьте новое задание cron (например, @reboot root mail -s "I just rebooted"[email protected]
- Установите logcheck; он отправит вам сообщения журнала, содержащие причину перезагрузки (если есть какие-либо записи журнала о них)
решение2
Трудно отследить, почему ваш компьютер сломался и перезагрузился, но вы можете отправить ваши журналы по электронной почте с уведомлением по электронной почте. Для расширенного мониторинга я предлагаю попробовать Zabbix, NagiOS или Cacti. Однако вот простой скрипт Python 2.7 для отправки электронной почты с командой "./script.py имя_пользователя_для_gmail путь_к_письму":
#!/usr/bin/python2.7
import smtplib
import getopt
import sys
args = getopt.getopt(sys.argv[1:], ":")
laiskas = args[1][1]
SENDER = "no-reply@" + args[1][0]
mssg = open(laiskas, 'r').read()
RECIPIENTS = ['[email protected]']
server = smtplib.SMTP('smtp.gmail.com',587)
#server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.ehlo()
server.login(args[1][0] + "@gmail.com","R7olM6Qw")
server.sendmail(SENDER,RECIPIENTS,mssg)
server.quit()
Вам нужно изменить R7olM6Qw на свой пароль GMail. Также, пожалуйста, измените переменную RECIPIENTS на ваши адреса. Для скрипта требуются smtplib и python2.7, которые, возможно, придется установить на вашем сервере из apt.
Затем вы можете создать простой текстовый файл рядом со скриптом:
To: [email protected]
From: [email protected]
Subject: Computer powered on!
Random text here...
В конце просто добавьте новую строку в файл /etc/rc.local:
/path/to/the/python/script gmail_username /path/to/the/letter
Однако это небезопасный метод, так как вы будете хранить свой пароль небезопасно, поэтому я предлагаю создать почтовый ящик специально для этого. Также, пожалуйста, помните об этом и chmod для всех скриптов, чтобы другие пользователи не могли ничего с ними сделать.
Вместо этого я думаю, что было бы разумнее иметь отдельный сервер с PHP-скриптом почтовой рассылки, доступным только для IP-адресов серверов. В этом случае отдельный сервер будет безопасно выполнять почтовую рассылку, оставляя другим серверам только curl или wget для отправки уведомлений.
решение3
#!/bin/sh
EMAIL="[email protected]"
SUBJECT="[$HOSTNAME] - System $1"
if [ "$1" = startup ]
then
ACTION="started successfully"
else
ACTION="is shutting down"
fi
# a printf format string to simplify a long body
BODY="This is an automated message to notify you that %s %s.\nDate and Time: %s\n"
printf "$BODY" "$HOSTNAME" "$ACTION" "$(date)" | mail -s "${SUBJECT}" "${EMAIL}"
Сохраните его, например, как /usr/local/bin/bootmail.sh, сделайте его исполняемым и т. д.
Затем, чтобы создать службу systemd, создайте файл в /etc/systemd/system с расширением .service (например, /etc/systemd/system/bootmail.service), содержащий:
[Unit]
Description=Run Scripts at Start and Stop
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/bootmail.sh startup
ExecStop=/usr/local/bin/bootmail.sh shutdown
[Install]
WantedBy=multi-user.target
Now, do:
systemctl daemon-reload
systemctl enable bootmail.service
Теперь вы должны получать письма при запуске и завершении работы (при условии, что почта настроена правильно и т. д.).