Ich habe zu Hause einen Ubuntu 10.04-Desktop, der rund um die Uhr läuft. Vor kurzem ist mir aufgefallen, dass die Maschine gelegentlich von selbst neu startet (ungefähr einmal im Monat). Ich möchte diesen Server so einrichten, dass ich bei jedem Serverstart eine E-Mail erhalte. Ich möchte die E-Mail über mein Gmail-Konto erhalten und werde ein weiteres Gmail-Konto einrichten, über das der Server E-Mails senden kann (falls erforderlich).
Als zusätzlicher Bonus wäre es toll, wenn die E-Mail Diagnoseinformationen zu den Ursachen für den Absturz und Neustart des Servers enthalten würde.
Danke
Antwort1
Ich sehe mindestens zwei mögliche Optionen:
- Fügen Sie einen neuen Cronjob hinzu (z. B. @reboot root mail -s "Ich habe gerade einen Neustart durchgeführt")[email geschützt]
- Installieren Sie logcheck. Es sendet Ihnen Protokollnachrichten mit dem Grund für den Neustart (sofern Protokolleinträge dazu vorhanden sind).
Antwort2
Es ist schwer nachzuvollziehen, warum Ihr Computer abgestürzt und neu gestartet wurde, aber Sie können Ihre Protokolle mit der Benachrichtigungs-E-Mail versenden. Für eine erweiterte Überwachung empfehle ich, Zabbix, NagiOS oder Cacti auszuprobieren. Hier ist jedoch ein einfaches Python 2.7-Skript zum Senden einer E-Mail mit dem Befehl „./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()
Sie müssen R7olM6Qw in Ihr eigenes GMail-Passwort ändern. Ändern Sie außerdem die Variable RECIPIENTS für Ihre Adressen. Das Skript benötigt smtplib und python2.7, die möglicherweise von apt auf Ihrem Server installiert werden müssen.
Anschließend können Sie neben dem Skript eine einfache Textdatei erstellen:
To: [email protected]
From: [email protected]
Subject: Computer powered on!
Random text here...
Fügen Sie am Ende einfach eine neue Zeile zur Datei /etc/rc.local hinzu:
/path/to/the/python/script gmail_username /path/to/the/letter
Dies ist jedoch keine sichere Methode, da Sie Ihr Passwort nicht sicher speichern. Ich schlage daher vor, ein Postfach nur dafür zu erstellen. Beachten Sie dies bitte und chmodden Sie alle Skripte, um zu verhindern, dass andere Benutzer irgendetwas damit tun.
Stattdessen halte ich es für sinnvoller, einen separaten Server mit PHP-Mailer-Skript zu haben, der nur für die IPs der Server verfügbar ist. In diesem Fall würde der separate Server den Mailing-Dienst sicher ausführen, während Ihre anderen Server nur curl oder wget zum Senden der Benachrichtigungen verwenden.
Antwort3
#!/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}"
Speichern Sie dies beispielsweise als /usr/local/bin/bootmail.sh, machen Sie es ausführbar usw.
Um dann einen systemd-Dienst zu erstellen, erstellen Sie in /etc/systemd/system eine Datei mit der Erweiterung .service (z. B. /etc/systemd/system/bootmail.service), die Folgendes enthält:
[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
Jetzt sollten Sie beim Starten und Herunterfahren E-Mails erhalten (vorausgesetzt, der E-Mail-Versand ist richtig konfiguriert usw.).