Startseite » wie man » Computer Statistiken automatisch generieren und per E-Mail versenden

    Computer Statistiken automatisch generieren und per E-Mail versenden

    Es ist wichtig, täglich verschiedene Protokolldaten und Statistiken auf Ihrem Server zu prüfen, aber es wird immer lästiger. Wäre es nicht schön, jeden Tag eine einzige E-Mail mit allen Highlights zu erhalten, sodass Sie nicht einmal auf den Server zugreifen müssen, um Probleme zu ermitteln? 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 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 anpassbar sein.

    Automatisierte E-Mails in Linux

    Wir verwenden dazu zwei verschiedene Pakete, ssmtp und mailutils. Installieren Sie beide also mit dem folgenden Befehl:

    $ sudo apt-get install ssmtp mailutils

    Sobald diese installiert sind, müssen wir einige Änderungen an der SSMTP-Konfigurationsdatei vornehmen:

    $ sudo vi /etc/ssmtp/ssmtp.conf

    Bearbeiten Sie die Datei mit diesen Änderungen (Sie können einfach den gesamten Text in der Datei löschen und diese Einstellungen kopieren / einfügen, wenn Sie möchten):

    # Diese Adresse erhält die E-Mails. Geben Sie hier Ihre eigene E-Mail ein, wenn Sie sie erhalten möchten.

    [email protected]

    # Geben Sie hier den E-Mail-Server an (bei Verwendung von Gmail unverändert lassen)..

    mailhub = smtp.gmail.com: 587

    # Der Domainname, von dem die E-Mail stammt.

    rewriteDomain = gmail.com

    # Die E-Mail-Adresse, von der diese E-Mails stammen sollen.

    [email protected]

    # SSL / TLS-Einstellungen, erforderlich für Google Mail und die meisten anderen Mail-Server.

    UseTLS = Ja

    UseSTARTTLS = Ja

    # Der Benutzername und das Passwort für Ihr Google Mail-Konto.

    AuthUser = Benutzername

    AuthPass = Passwort

    # Erlaubt die Möglichkeit, eine andere Adresse als die oben angegebene anzugeben.

    FromLineOverride = Ja

    Wenn Sie mit der Bearbeitung der Datei fertig sind, sollten Sie die Berechtigungen ändern, da Ihr Google Mail-Kennwort im Klartext gespeichert wird.

    $ sudo chmod 640 /etc/ssmtp/ssmtp.conf

    $ sudo chown username.username /etc/ssmtp/ssmtp.conf

    Es ist immer sicherer, root zum Eigentümer der Datei zu machen, aber dann müssten wir den sudo-Befehl in unserem Skript verwenden, und es würde uns zur Eingabe eines Kennworts auffordern, wodurch der Zweck der Automatisierung dieses gesamten Prozesses missachtet wird.

    Wenn Sie einen gemeinsam genutzten Server verwenden und sich Sorgen machen, dass Ihr Kennwort im Klartext gespeichert wird und von root gelesen werden kann, erstellen Sie ein wegwerfbares Google Mail-Konto oder verwenden Sie einen E-Mail-Server, für den keinerlei Authentifizierung erforderlich ist.

    Um sicherzustellen, dass alles richtig konfiguriert ist, versuchen wir eine Test-E-Mail:

    $ echo "Testing" | mail -s "Mail-Setup testen" [email protected]

    "Test" wird in der E-Mail enthalten und der Betreff lautet "Test-E-Mail-Setup".

    Ein Skript für die E-Mails schreiben

    Da wir nun in der Lage sind, E-Mails über die Befehlszeile zu senden, schreiben wir ein Skript, das uns einige grundlegende Informationen über unser System sendet.

    #! / bin / bash

    # Überprüfen Sie den Festplattenspeicher

    echo "Festplattenspeicher:"> /home/geek/email.txt

    df -h >> /home/geek/email.txt

    # Listet die angemeldeten Benutzer auf

    echo "Benutzer sind derzeit angemeldet:" >> /home/geek/email.txt

    wer >> /home/geek/email.txt

    # Listet aktuell laufende Prozesse auf

    echo "Laufende Prozesse:" >> /home/geek/email.txt

    ps -e >> /home/geek/email.txt

    # Senden Sie die E-Mail

    cat /home/geek/email.txt | mail -s "Tägliche Serverinformationen" [email protected]

    # Löschen Sie die von uns erstellte Datei

    rm /home/geek/email.txt

    Natürlich können Sie mit Ihrem Skript viel tiefer in die Tiefe gehen und sogar die Formatierung etwas angenehmer gestalten, aber so sieht die Ausgabe in unserer E-Mail aus:

    Nun, da das Skript geschrieben und getestet ist, können wir es mit cron jeden Tag zur selben Zeit automatisch ausführen. In diesem Beispiel konfigurieren wir die E-Mail so, dass sie jeden Morgen um 2:00 Uhr gesendet wird, sodass wir die Daten später am Tag durchgehen können.

    $ crontab -e

    Für E-Mails um 2:00 Uhr fügen Sie Folgendes 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.

    Automatisierte E-Mails in Windows

    Das Versenden von E-Mails über die Befehlszeile ist über PowerShell möglich, wir haben jedoch festgestellt, dass die Implementierung dieser Funktion mit Apps von Drittanbietern viel einfacher ist, insbesondere bei der Verwendung von Google Mail. SendEmail ist ein kostenloses Programm für Windows, das die Integration mit Windows Task Scheduler und Gmail zu einem Kinderspiel macht. Klicken Sie auf den Link oben, um die neueste Version herunterzuladen, und stellen Sie sicher, dass Sie die TLS-unterstützte Version verwenden.

    Wenn Sie SendEmail heruntergeladen haben, entpacken Sie die ZIP-Datei und legen Sie den Inhalt an einem Ort ab, an dem Sie sie aufbewahren können, solange Sie planen, automatisierte E-Mails zu senden. In diesem Beispiel speichern wir das Programm einfach in C: \ SendEmail

    Lassen Sie uns SendEmail testen, um einen Eindruck davon zu bekommen, wie es funktioniert. Öffnen Sie eine Eingabeaufforderung, indem Sie im Menü Start oder Ausführen (Strg + R) cmd eingeben.

    Navigieren Sie bei geöffneter Eingabeaufforderung mit dem Befehl change directory zum Speicherort der SendEmail-Dateien.

    cd C: \ SendEmail

    Jetzt können wir versuchen, eine Test-E-Mail mit dem folgenden Befehl zu senden:

    sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu Benutzername -xp Kennwort -u "Test-E-Mail-Betreff" -m "Dies ist eine Test-E-Mail."

    Ersetzen Sie selbstverständlich vor der Ausführung des Befehls "Benutzername" und "Kennwort" durch Ihre Kontoanmeldeinformationen.

    Der Befehl oben macht Folgendes:

    E-Mail senden führt das Programm aus.

    -f - von der Adresse

    -t - ansprechen

    -s - SMTP-Server

    -xu - Benutzername

    -xp - Konto Passwort

    -u - E-Mail Betreff

    -m - E-Mail-Nachrichtentext

    Überprüfen Sie Ihren Posteingang, um sicherzustellen, dass Sie die Test-E-Mail erhalten haben. Anschließend können Sie ein Skript schreiben, das uns Serverinformationen sendet.

    Ein Skript für die E-Mails schreiben

    Um unser Skript optimal zu nutzen, schreiben wir es für PowerShell. Ö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 jeden Befehl auflisten, den PowerShell ausführen kann. Dies sollte Ihnen einen guten Start beim Generieren der Informationen ermöglichen, die Sie melden müssen. In Ihrem Skript können Sie auch Programme von Drittanbietern aufrufen, um Informationen auszugeben (d. H. SendEmail ist eine App eines Drittanbieters, PowerShell und cmd können damit jedoch Aufgaben ausführen, die normalerweise nicht möglich sind.).

    In unserem Beispielskript überprüfen wir die aktuelle Festplattennutzung des Laufwerks C, zeigen die aktuell ausgeführten Prozesse an und zeigen alle Dateien an, die derzeit über das Netzwerk freigegeben werden.

    # Überprüfen Sie den Festplattenspeicher

    echo "C: Laufwerksnutzung:"> C: \ SendEmail \ info.txt

    Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Objektgröße auswählen, Freiraum >> C: \ SendEmail \ info.txt

    # Listet aktuell laufende Prozesse auf

    echo "Laufende Prozesse:" >> C: \ SendEmail \ info.txt

    get-process >> C: \ SendEmail \ info.txt

    # Listet die aktuell freigegebenen Dateien / Ordner auf

    echo "SMB-Freigaben:" >> C: \ SendEmail \ info.txt

    get-smbshare >> C: \ SendEmail \ info.txt

    # Senden Sie die E-Mail

    Geben Sie C: \ SendEmail \ info.txt | ein C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu Benutzername -xp Kennwort -u "Tägliche Serverinformationen"

    # Löschen Sie die Datei, die wir erstellt haben

    rm C: \ SendEmail \ info.txt

    In diesem Skript werden verschiedene Informationen in 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 der Erweiterung ps1 (PowerShell-Datei)..

    Führen Sie nach Abschluss des Skripts einen kurzen Test über eine Eingabeaufforderung aus, um sicherzustellen, dass es ordnungsgemäß funktioniert.

    Verwenden Sie einfach die Power Shell Befehl mit einem -Datei Argument 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. Wenn dies nicht der Fall ist, überprüfen Sie das Skript auf Syntaxfehler. So sieht die generierte E-Mail aus unserem Beispielskript aus:

    Sie können mit der Formatierung herumspielen (z. B. leere Zeilen zwischen Text wiedergeben), um die Anzeige auf Ihrem Gerät angenehmer zu gestalten, oder besser noch ein Programm eines Drittanbieters verwenden, das die benötigten Informationen in einem besser lesbaren Format ausgibt als Windows ( der Scripting-Prozess ist immer noch derselbe).

    Wenn Sie die Knicke in Ihrem Skript ermittelt haben, können Sie sie mit dem Windows Task Scheduler automatisieren. Öffnen Sie den Windows Taskplaner über das Startmenü.

    Wählen Sie bei geöffnetem Taskplaner Action> Create Basic Task aus.

    Benennen Sie diese Aufgabe etwa wie "Tägliches E-Mail-Skript" und klicken Sie auf Weiter. Wählen Sie im nächsten Bildschirm die Häufigkeit aus, mit der Ihr E-Mail-Skript ausgeführt werden soll, wahrscheinlich täglich. Wählen Sie dann die Uhrzeit aus, zu der das Skript ausgeführt werden soll, und klicken Sie auf Weiter.

    Jetzt sollten Sie sich im Assistentenbereich "Aktion" befinden, "Programm starten" auswählen und den gleichen Text eingeben, den wir zuvor in die Eingabeaufforderung "Ausführen" eingegeben haben, um unser Skript zu testen.

    Klicken Sie auf Weiter und anschließend auf Ja in diesem Fenster:

    Klicken Sie im letzten Menü auf Fertig stellen, und Sie haben die Planung der automatischen E-Mails abgeschlossen.