Eu tenho um desktop Ubuntu 10.04 em casa que funciona 24 horas por dia, 7 dias por semana. Recentemente, notei que a máquina ocasionalmente reinicia sozinha (aproximadamente uma vez por mês). Gostaria de configurar este servidor para receber um e-mail sempre que o servidor for iniciado. Gostaria de receber o e-mail na minha conta do Gmail e configurarei outra conta do Gmail para o servidor usar para enviar e-mails (se necessário).
Como um bônus adicional, seria ótimo se o e-mail pudesse conter algum tipo de informação de diagnóstico referente ao que causou a falha e a reinicialização do servidor.
Obrigado
Responder1
Vejo pelo menos duas opções possíveis:
- Adicione um novo cronjob (por exemplo, @reboot root mail -s "Acabei de reiniciar"[e-mail protegido]
- Instale o logcheck; ele enviará a você as mensagens de log contendo o motivo da reinicialização (se houver alguma entrada de log sobre elas)
Responder2
É difícil rastrear por que seu computador travou e reiniciou, mas você pode enviar seus registros por e-mail com o e-mail de notificação. Para monitoramento avançado, sugiro experimentar Zabbix, NagiOS ou Cacti. No entanto, aqui está um script simples do Python 2.7 para enviar um e-mail com um comando "./script.py username_for_gmail path_to_letter":
#!/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()
Você deve alterar R7olM6Qw para sua própria senha do GMail. Além disso, altere a variável RECIPIENTS para seus endereços. O script precisa de smtplib e python2.7, que podem precisar ser instalados em seu servidor a partir do apt.
Então você pode criar um arquivo de texto simples próximo ao script:
To: [email protected]
From: [email protected]
Subject: Computer powered on!
Random text here...
No final, basta adicionar uma nova linha ao arquivo /etc/rc.local:
/path/to/the/python/script gmail_username /path/to/the/letter
No entanto, este não é um método seguro, pois você armazenará sua senha de forma insegura, então sugiro criar uma caixa de correio apenas para isso. Além disso, lembre-se e faça chmod em todos os scripts para evitar que outros usuários façam algo com eles.
Em vez disso, acho que é mais razoável ter um servidor separado com script PHP mailer disponível apenas para IPs de servidores. Nesse caso, o servidor separado executaria o serviço de correspondência com segurança, deixando os outros servidores apenas com curl ou wget para enviar as notificações.
Responder3
#!/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}"
Salve isso como, digamos, /usr/local/bin/bootmail.sh, torne-o executável, etc.
Então, para criar um serviço systemd, crie um arquivo em /etc/systemd/system com extensão .service (por exemplo, /etc/systemd/system/bootmail.service) contendo:
[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
Agora, você deve receber e-mails na inicialização e no desligamento (assumindo que o e-mail esteja configurado corretamente, etc.).