Ubuntu 10.04 — отправка электронного письма при запуске компьютера

Ubuntu 10.04 — отправка электронного письма при запуске компьютера

У меня дома есть Ubuntu 10.04, который работает круглосуточно. Недавно я заметил, что машина иногда перезагружается сама по себе (примерно раз в месяц). Я хотел бы настроить этот сервер так, чтобы получать электронную почту каждый раз при запуске сервера. Я хотел бы получать электронную почту на свой аккаунт gmail, и я настрою еще один аккаунт gmail, чтобы сервер мог отправлять электронные письма (при необходимости).

В качестве дополнительного бонуса было бы здорово, если бы электронное письмо содержало какую-либо диагностическую информацию, касающуюся причины сбоя и перезапуска сервера.

Спасибо

решение1

Я вижу как минимум два возможных варианта:

  1. Добавьте новое задание cron (например, @reboot root mail -s "I just rebooted"[email protected]
  2. Установите 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

Теперь вы должны получать письма при запуске и завершении работы (при условии, что почта настроена правильно и т. д.).

Связанный контент