11Jul
Es ist wichtig, jeden Tag verschiedene Protokolldaten und Statistiken auf Ihrem Server zu überprüfen, aber es wird mühsam. Wäre es nicht nett, jeden Tag eine einzige E-Mail mit allen Highlights zu erhalten, so dass Sie nicht einmal auf den Server gehen müssen, um nach Problemen zu suchen? In diesem Handbuch erfahren Sie, wie Sie automatisierte E-Mails unter Linux und Windows konfigurieren.
Wir werden dies speziell für Ubuntu und Windows 8.1 behandeln, wobei Google Mail als E-Mail-Server verwendet wird, von dem die E-Mails gesendet werden. Wenn Sie eine andere Version von Linux oder Windows verwenden oder lieber einen anderen E-Mail-Dienst verwenden, sollten die Anweisungen hier leicht angepasst werden können.
Automatisierte E-Mails unter Linux
Wir verwenden dafür zwei verschiedene Pakete, ssmtp und mailutils, und installieren Sie beide mit dem folgenden Befehl:
$ sudo apt-get installieren ssmtp mailutils
Sobald diese installiert sind, brauchen wirUm einige Änderungen an der SSMTP-Konfigurationsdatei vorzunehmen:
$ sudo vi /etc/ssmtp/ ssmtp.conf
Bearbeiten Sie die Datei mit diesen Änderungen( es ist einfach, den gesamten Text in der Datei zu löschen und diese Einstellungen zu kopieren / einzufügen, wenn Sie möchten):
# Diese Adresse erhält die E-Mails. Geben Sie hier Ihre eigene E-Mail-Adresse ein, wenn Sie diese erhalten möchten.
# Geben Sie den E-Mail-Server hier an( belassen Sie ihn unverändert, wenn Sie Google Mail verwenden).
mailhub = smtp.gmail.com: 587
# Der Domainname, von dem die Mail kommt.
rewriteDomain = gmail.com
# Die E-Mail-Adresse, von der diese E-Mails stammen sollen.
# SSL / TLS-Einstellungen, die für Gmail und die meisten anderen Mail-Server erforderlich sind.
UseTLS = Ja
UseSTARTTLS = Ja
# Der Benutzername und das Passwort für Ihr Google Mail-Konto.
AuthUser = Benutzername
AuthPass = Passwort
# Erlaubt die Angabe einer anderen Adresse als der obigen.
FromLineOverride = yes
Wenn Sie mit der Bearbeitung der Datei fertig sind, sollten Sie die Berechtigungen ändern, da Ihr Google Mail-Passwort im Klartext gespeichert ist.
$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf
$ sudo chown Benutzername.username /etc/ssmtp/ ssmtp.conf
Es ist immer sicherer, root zum Eigentümer der Datei zu machen, aber dann müssten wir den Befehl sudo in unserem Skript verwendenfordert uns zur Eingabe eines Passworts auf und vereitelt damit den Zweck, diesen ganzen Prozess zu automatisieren.
Wenn Sie einen gemeinsam genutzten Server verwenden und sich Sorgen darüber machen, dass Ihr Passwort im Klartext gespeichert und von root lesbar ist, erstellen Sie ein Google Mail-Konto oder verwenden Sie einen E-Mail-Server, der überhaupt keine Authentifizierung erfordert.
Um sicherzustellen, dass alles korrekt konfiguriert ist, versuchen wir eine Test-E-Mail:
$ echo "Testing" |mail -s "Testen der E-Mail-Einrichtung" [email protected]
"Testen" befindet sich im Text der E-Mail und der Betreff lautet "Testen der E-Mail-Einrichtung". Überprüfen Sie Ihre E-Mail, um sicherzustellen, dass Sie sie erhalten haben.
Schreiben eines Skripts für die E-Mails
Jetzt, da wir in der Lage sind, E-Mails von der Befehlszeile aus zu senden, schreiben wir ein Skript, das uns einige grundlegende Informationen über unser System liefert.
#!/bin/ bash
# Festplattenspeicherplatz prüfen
echo "Festplattenspeicher:" & gt;/home/geek/ email.txt
df -h & gt; & gt;/home/geek/ email.txt
# Liste der angemeldeten Benutzer
echo "Derzeit angemeldete Benutzer:" & gt; & gt;/home/geek/ email.txt
wer & gt; & gt;/home/geek/ email.txt
# Liste der aktuell ausgeführten Prozesse
echo "Laufende Prozesse:" & gt; & gt;/home/geek/ email.txt
ps -e & gt; & gt;/home/geek/ email.txt
# Senden Sie die Email
Katze /home/geek/ email.txt |mail -s "Daily server information" [email protected]
# Lösche die Datei, die wir erstellt haben
rm /home/geek/ email.txt
Offensichtlich kannst du viel tiefer in dein Skript einsteigen und sogar die Formatierung ein wenig schöner machen, aberSo sieht die Ausgabe in unserer E-Mail aus:
Jetzt, da das Skript geschrieben und getestet wurde, können wir Cron verwenden, um es jeden Tag zur selben Zeit automatisch auszuführen. In diesem Beispiel konfigurieren wir die E-Mail so, dass sie jeden Morgen um 2:00 Uhr gesendet wird, sodass wir später an diesem Tag die Daten durchgehen können.
$ crontab -e
Für 2:00 Uhr E-Mails fügen Sie hinzu:
0 2 * * * /home/geek/ script.sh
Wir haben einen ganzen Artikel über crontab-Dateien geschrieben, wenn Sie weitere Hilfe zu diesem Teil benötigen. Automatische
-E-Mails in Windows
Das Senden von E-Mails über die Befehlszeile ist über PowerShell möglich. Wir haben jedoch festgestellt, dass die Implementierung dieser Funktion mit Anwendungen von Drittanbietern viel einfacher ist, insbesondere bei Verwendung von Gmail. SendEmail ist ein kostenloses Programm für Windows, das die Integration mit Windows Task Scheduler und Google Mail ein Kinderspiel macht. Klicken Sie auf den obigen Link, um die neueste Kopie herunterzuladen, und stellen Sie sicher, dass Sie sich die TLS-unterstützte Version besorgen.
Nachdem Sie SendEmail heruntergeladen haben, extrahieren Sie die ZIP-Datei und legen Sie den Inhalt an einen Ort, an dem Sie sie speichern können, solange Sie beabsichtigen, automatisierte E-Mails zu senden. In diesem Beispiel speichern wir das Programm einfach in C: \ SendEmail
Testen Sie SendEmail, um ein schnelles Gefühl dafür zu bekommen, wie es funktioniert.Öffnen Sie eine Eingabeaufforderung, indem Sie cmd in das Menü Start oder Ausführen( Strg + R) eingeben.
Verwenden Sie bei geöffneter Eingabeaufforderung den Befehl zum Ändern des Verzeichnisses, um zu der Stelle zu navigieren, an der Sie die SendEmail-Dateien gespeichert haben.
cd C: \ SendEmail
Jetzt können wir versuchen, eine Test-E-Mail mit folgendem Befehl zu senden:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu benutzername -xpPasswort -u "E-Mail-Betreff testen" -m "Dies ist eine Test-E-Mail."
Ersetzen Sie "username" und "password" offensichtlich durch Ihre Kontoanmeldeinformationen, bevor Sie den Befehl ausführen.
Hier ist, was der obige Befehl tatsächlich tut:
sendEmail führt das Programm aus.
-f - von der Adresse
-t - zur Adresse
-s - SMTP-Server
-xu - Konto-Benutzername
-xp - Konto-Passwort
-u - Betreff der E-Mail
-m - E-Mail-Text
Überprüfen Sie Ihren Posteingang, um sicherzustellenSie haben die Test-E-Mail erhalten, und dann können wir mit dem Schreiben eines Skripts fortfahren, das uns Serverinformationen sendet.
Schreiben eines Skripts für die E-Mails
Um das meiste aus unserem Skript herauszuholen, werden wir es für PowerShell schreiben.Öffnen Sie Windows PowerShell ISE, indem Sie powershell_ise.exe in eine Ausführungsaufforderung eingeben( Strg + R).
Auf der rechten Seite des PowerShell ISE-Fensters können Sie alle Befehle auflisten, die PowerShell ausführen kann. Dies sollte Ihnen einen guten Start bei der Generierung der Arten von Informationen, die Sie gemeldet haben, geben. In Ihrem Skript können Sie auch Programme von Drittanbietern aufrufen, um Informationen auszugeben( d. H. SendEmail ist eine App von Drittanbietern, aber PowerShell und cmd können damit Aufgaben ausführen, die normalerweise nicht möglich sind).
In unserem Beispielscript überprüfen wir die aktuelle Festplattenbelegung des Laufwerks C, zeigen die aktuell laufenden Prozesse an und zeigen alle Dateien an, die gerade über das Netzwerk verteilt werden.
# Festplattenspeicherplatz prüfen
echo "C: Laufwerksverwendung:" & gt;C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Select-Objektgröße, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt
# Liste der derzeit ausgeführten Prozesse
echo "Laufende Prozesse:" & gt; & gt;C: \ SendEmail \ info.txt
get-process & gt; & gt;C: \ SendEmail \ info.txt
# Auflisten der aktuell freigegebenen Dateien / Ordner
echo "SMB shares:" & gt; & gt;C: \ SendEmail \ info.txt
get-smbshare & gt; & gt;C: \ SendEmail \ info.txt
# Senden Sie die E-Mail
Typ C: \ SendEmail \ info.txt |C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu benutzername -xp passwort -u "Tägliche Server Info"
# Löschen Sie die Datei, die wir
erstellt habenrm C: \ SendEmail \ info.txt
In diesem Skript werden verschiedene Informationen an C: \ SendEmail \ info.txt ausgegeben. Anschließend wird der Text in diesem Dokument per E-Mail an uns gesendet, bevor er gelöscht wird. Speichern Sie Ihr Skript mit einer Dateierweiterung ps1( PowerShell-Datei).
Führen Sie nach Abschluss des Skripts einen Schnelltest aus einer Ausführungsaufforderung aus, um sicherzustellen, dass es ordnungsgemäß funktioniert.
Verwenden Sie einfach den Powershell-Befehl mit einem Argument -file und geben Sie den Pfad zu Ihrem Skript an.
Powershell -Datei "c: \ SendEmail \ daily-email.ps1"
Überprüfen Sie Ihren Posteingang, um sicherzustellen, dass Sie die E-Mail erhalten haben - falls nicht, sehen Sie sich Ihr Skript nach Syntaxfehlern an. So sieht die generierte E-Mail aus unserem Beispielskript aus:
Sie können mit der Formatierung herumspielen( z. B. Leerzeilen zwischen Text wiedergeben), um sie auf Ihrem Gerät schöner darzustellen, oder besser, Sie können ein Programm von Drittanbietern verwendenAusgabe der benötigten Informationen in einem besser lesbaren Format als Windows( der Scripting-Prozess bleibt unverändert).
Sobald Sie die Knicke in Ihrem Skript ausgearbeitet haben, können Sie den Windows Taskplaner verwenden, um es zu automatisieren.Öffnen Sie den Windows Taskplaner über das Startmenü.
Wenn der Taskplaner geöffnet ist, wählen Sie Aktion & gt;Erstellen Sie eine grundlegende Aufgabe.
Benennen Sie diese Aufgabe so etwas wie "Tägliches E-Mail-Skript" und klicken Sie auf Weiter. Wählen Sie auf dem nächsten Bildschirm die Häufigkeit aus, mit der Ihr E-Mail-Skript wahrscheinlich täglich ausgeführt werden soll. Wählen Sie dann die Zeit aus, zu der das Skript ausgeführt werden soll, und klicken Sie auf "Weiter".
Nun sollten Sie sich im "Aktion" -Teil des Assistenten befinden, wählen Sie "Start a Program" und geben Sie den gleichen Text ein, den wir zuvor in die Run-Eingabeaufforderung eingegeben haben, um unser Skript zu testen.
Klicken Sie auf "Weiter" und dann auf "Ja" in diesem Fenster:
Klicken Sie im letzten Menü auf "Fertig stellen". Damit sind Sie fertig mit der Planung Ihrer automatischen E-Mails.