Startpagina » hoe » Hoe automatisch computergegevens te genereren en e-mailen

    Hoe automatisch computergegevens te genereren en e-mailen

    Het is belangrijk om elke dag verschillende loggegevens en statistieken op uw server te controleren, maar het wordt saai. Zou het niet leuk zijn om elke dag een enkele e-mail met alle hoogtepunten te ontvangen, dus je hoeft niet eens op de server te komen om te controleren op problemen? Deze handleiding zal u laten zien hoe u geautomatiseerde e-mails kunt configureren op Linux en Windows.

    We zullen dit specifiek behandelen voor Ubuntu en Windows 8.1, waarbij Gmail wordt gebruikt als de e-mailserver waartoe mail wordt verzonden. Als u een andere versie van Linux of Windows hebt, of liever een andere e-mailservice gebruikt, moeten de instructies hier gemakkelijk kunnen worden aangepast.

    Geautomatiseerde e-mails in Linux

    We gaan twee verschillende pakketten gebruiken om dit te bereiken, ssmtp en mailutils, dus installeer ze allebei met de volgende opdracht:

    $ sudo apt-get installeer ssmtp mailutils

    Zodra deze zijn geïnstalleerd, moeten we enkele wijzigingen in het SSMTP-configuratiebestand aanbrengen:

    $ sudo vi /etc/ssmtp/ssmtp.conf

    Bewerk het bestand met deze wijzigingen (het is veilig om gewoon alle tekst in het bestand te wissen en deze instellingen te kopiëren en plakken, als je dat wilt):

    # Dit adres ontvangt de e-mails, dus voer hier uw eigen e-mailadres in als u deze wilt ontvangen.

    [email protected]

    # Geef hier de e-mailserver op (laat dit staan ​​als u Gmail gebruikt).

    mailhub = smtp.gmail.com: 587

    # De domeinnaam waarvan de mail afkomstig zal zijn.

    rewriteDomain = gmail.com

    # Het e-mailadres waar deze e-mails vandaan zouden moeten komen.

    [email protected]

    # SSL / TLS-instellingen, vereist voor Gmail en de meeste andere e-mailservers.

    UseTLS = Ja

    UseSTARTTLS = Ja

    # De gebruikersnaam en het wachtwoord voor uw Gmail-account.

    AUTHUSER = gebruikersnaam

    AuthPass = wachtwoord

    # Sta de mogelijkheid toe om een ​​vanaf-adres op te geven dat verschilt van het adres hierboven.

    FromLineOverride = yes

    Als je klaar bent met het bewerken van het bestand, wil je de rechten wijzigen omdat je Gmail-wachtwoord in gewone tekst is opgeslagen.

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

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

    Het is altijd veiliger om root de eigenaar van het bestand te maken, maar dan moeten we de opdracht sudo in ons script gebruiken en dit zou ons om een ​​wachtwoord vragen, waarbij we het doel van het automatiseren van dit hele proces verslaan.

    Als u een gedeelde server gebruikt en u zich zorgen maakt over het feit dat uw wachtwoord in leesbare tekst wordt opgeslagen en door root kan worden gelezen, maakt u een wegwerp-Gmail-account of gebruikt u een e-mailserver die in de eerste plaats geen type authenticatie vereist..

    Om te controleren of alles correct is geconfigureerd, proberen we een test-e-mail:

    $ echo "Testen" | mail -s "Testen van mail setup" [email protected]

    'Testen' staat in de hoofdtekst van het e-mailbericht en het onderwerp is 'Testen van e-mailinstellingen'. Controleer uw e-mail om te controleren of u deze heeft ontvangen.

    Een script schrijven voor de e-mails

    Nu we e-mails van de opdrachtregel kunnen verzenden, kunnen we een script schrijven dat ons wat basisinformatie over ons systeem bezorgt.

    #! / Bin / bash

    # Controleer de ruimte op de harde schijf

    echo "Vaste-schijfruimte:"> /home/geek/email.txt

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

    # Maak een lijst van de gebruikers die zijn ingelogd

    echo "Gebruikers die momenteel zijn ingelogd:" >> /home/geek/email.txt

    wie >> /home/geek/email.txt

    # Lijst die momenteel bezig is met processen

    echo "Actieve processen:" >> /home/geek/email.txt

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

    # Stuur de e-mail

    cat /home/geek/email.txt | mail -s "Dagelijkse serverinformatie" [email protected]

    # Verwijder het bestand dat we hebben gemaakt

    rm /home/geek/email.txt

    Uiteraard kun je veel meer diepgang krijgen met je script en zelfs de opmaak een beetje mooier maken, maar dit is hoe de uitvoer eruit ziet in onze e-mail:

    Nu het script is geschreven en getest, kunnen we cron gebruiken om het automatisch elke dag op hetzelfde tijdstip automatisch uit te voeren. In dit voorbeeld configureren we de e-mail die elke ochtend om 2:00 uur wordt verzonden, zodat we de gegevens later die dag kunnen doornemen.

    $ crontab -e

    Voeg voor e-mails van 2:00 AM toe:

    0 2 * * * /home/geek/script.sh

    We hebben een heel artikel over crontab-bestanden geschreven als je meer hulp nodig hebt met dit onderdeel.

    Geautomatiseerde e-mails in Windows

    Het verzenden van e-mails op de opdrachtregel is mogelijk via PowerShell, maar we hebben ontdekt dat het implementeren van deze functionaliteit een stuk eenvoudiger is met apps van derden, vooral wanneer u Gmail gebruikt. SendEmail is een gratis programma beschikbaar voor Windows dat integratie met Windows Task Scheduler en Gmail een fluitje van een cent maakt. Klik op de bovenstaande link om de nieuwste versie te downloaden en zorg ervoor dat u de door TLS ondersteunde versie haalt.

    Nadat je SendEmail hebt gedownload, pak je het zipbestand uit en plaats je de inhoud ergens waar je ze kunt opslaan zolang je van plan bent geautomatiseerde e-mails te verzenden. In dit voorbeeld bewaren we het programma gewoon in C: \ SendEmail

    Laten we SendEmail testen om snel een idee te krijgen hoe het werkt. Open een opdrachtprompt door cmd in het menu Start of Run (Ctrl + R) te typen.

    Terwijl de opdrachtprompt is geopend, gebruikt u de opdracht change directory om naar de locatie te gaan waar u de SendEmail-bestanden hebt opgeslagen.

    cd C: \ SendEmail

    Nu kunnen we proberen een testmail te sturen met de volgende opdracht:

    sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu gebruikersnaam -xp wachtwoord -u "Onderwerp van e-mail testen" -m "Dit is een testmail."

    Vervang duidelijk "gebruikersnaam" en "wachtwoord" met uw accountgegevens voordat u de opdracht uitvoert.

    Dit is wat de bovenstaande opdracht feitelijk doet:

    sendEmail voert het programma uit.

    -f - van adres

    -t - adresseren

    -s - SMTP-server

    -xu - account gebruikersnaam

    -xp - account wachtwoord

    -u - e-mail onderwerp

    -m - e-mail bodytekst

    Controleer uw inbox om te controleren of u de test-e-mail hebt ontvangen, en dan kunnen we verder gaan met het schrijven van een script dat ons serverinformatie zal sturen.

    Een script schrijven voor de e-mails

    Om het meeste uit ons script te halen, gaan we het voor PowerShell schrijven. Open Windows PowerShell ISE door powershell_ise.exe in een Run-prompt in te voeren (Ctrl + R).

    Aan de rechterkant van het PowerShell ISE-venster kunt u elke opdracht weergeven die PowerShell kan uitvoeren. Dit zou u een goede start moeten geven bij het genereren van de soorten informatie die u moet melden. In uw script kunt u ook programma's van derden aanroepen om informatie uit te voeren (dat wil zeggen, SendEmail is een app van derden, maar PowerShell en cmd kunnen het gebruiken om taken uit te voeren die zij normaal niet kunnen uitvoeren).

    Voor ons voorbeeldscript controleren we het huidige schijfgebruik van de C-schijf, tonen de momenteel lopende processen en tonen alle bestanden die momenteel worden gedeeld via het netwerk.

    # Controleer de ruimte op de harde schijf

    echo "C: Drive Usage:"> C: \ SendEmail \ info.txt

    Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Selecteer-objectgrootte, FreeSpace >> C: \ SendEmail \ info.txt

    # Lijst die momenteel bezig is met processen

    echo "Actieve processen:" >> C: \ SendEmail \ info.txt

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

    # Maak een lijst van de bestanden / mappen die momenteel worden gedeeld

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

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

    # Stuur de e-mail

    type C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu gebruikersnaam -xp wachtwoord -u "Dagelijkse serverinfo"

    # Verwijder het bestand dat we hebben gemaakt

    rm C: \ SendEmail \ info.txt

    In dit script wordt verschillende informatie uitgevoerd naar C: \ SendEmail \ info.txt, waarna de tekst in dat document naar ons wordt gemaild voordat deze wordt verwijderd. Sla je script op met een PS1-bestandsextensie (PowerShell-bestand).

    Nadat uw script is voltooid, voert u een snelle test uit vanaf een prompt uitvoeren om te controleren of deze correct werkt.

    Gebruik gewoon de powershell commando met een -het dossier argument en specificeer het pad naar uw script.

    powershell -file "c: \ SendEmail \ daily-email.ps1"

    Controleer uw inbox om te controleren of u de e-mail hebt ontvangen - zo niet, kijk dan in uw script voor syntaxisfouten. Dit is wat de gegenereerde e-mail van ons voorbeeldscript eruitziet:

    Je kunt spelen met de opmaak (zoals het echoën van lege regels tussen tekst) om het mooier op je apparaat weer te geven, of beter nog, je kunt een programma van derden gebruiken dat de benodigde informatie in een beter leesbare indeling dan Windows doet ( het scriptingproces zal nog steeds hetzelfde zijn).

    Zodra u de knikken in uw script hebt uitgewerkt, kunt u Windows Taakplanner gebruiken om het te automatiseren. Open Windows Task Scheduler via het menu Start.

    Open de Taakplanner en selecteer Actie> Basistaak maken.

    Geef deze taak een naam als "Dagelijks e-mailscript" en klik op Volgende. Selecteer in het volgende scherm de frequentie waarmee u uw e-mailscript wilt uitvoeren, waarschijnlijk dagelijks. Kies vervolgens de tijd waarop het script moet worden uitgevoerd en klik op Volgende.

    Nu zou je in het "Actie" deel van de wizard moeten zijn, selecteer "Start een programma" en voer dezelfde tekst in die we eerder in de Run prompt hadden ingevoerd om ons script te testen.

    Druk op Volgende en klik vervolgens op Ja in dit venster:

    Klik op Finish in het laatste menu en u bent klaar met het plannen van uw automatische e-mails.