Hemsida » hur » Hur genererar och skickar du automatiskt datorstatistik

    Hur genererar och skickar du automatiskt datorstatistik

    Det är viktigt att kontrollera olika loggdata och statistik på din server varje dag, men det blir väldigt tråkigt. Skulle det inte vara trevligt att få ett enda email med alla höjdpunkter varje dag, så du behöver inte ens komma på servern för att leta efter problem? Den här guiden visar hur du konfigurerar automatiserade e-postmeddelanden på Linux och Windows.

    Vi kommer specifikt att täcka detta för Ubuntu och Windows 8.1, med Gmail som e-postserver som det skickas från. Om du har en annan version av Linux eller Windows, eller föredrar att använda någon annan e-posttjänst, ska instruktionerna här lätt anpassas.

    Automatiserade e-postmeddelanden i Linux

    Vi ska använda två olika paket för att uppnå detta, ssmtp och mailutils, så installera båda med följande kommando:

    $ sudo apt-get installera ssmtp mailutils

    När de är installerade behöver vi göra några ändringar i SSMTP-konfigurationsfilen:

    $ sudo vi /etc/ssmtp/ssmtp.conf

    Redigera filen med dessa ändringar (det är säkert att bara radera all text i filen och kopiera / klistra in dessa inställningar, om du vill):

    # Den här adressen kommer att ta emot e-postmeddelandena, så skriv in ditt eget email här om du vill ta emot dem.

    [email protected]

    # Ange e-postservern här (lämna som om du använder Gmail).

    mailhub = smtp.gmail.com: 587

    # Domännamnet som posten kommer ifrån.

    rewriteDomain = gmail.com

    # Den e-postadress som dessa e-postmeddelanden ska vara från.

    [email protected]

    # SSL / TLS-inställningar, krävs för Gmail och de flesta andra mailservrar.

    UseTLS = Ja

    UseSTARTTLS = Ja

    # Användarnamnet och lösenordet till ditt Gmail-konto.

    AUTHUSER = användarnamn

    AuthPass = lösenord

    # Tillåt förmågan att ange en annan adress än den ovanstående.

    FromLineOverride = yes

    När du är klar med att redigera filen vill du ändra behörigheterna eftersom ditt Gmail-lösenord lagras i ren text.

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

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

    Det är alltid säkrare att göra rot till ägaren av filen, men då måste vi använda sudo-kommandot i vårt manus och det skulle leda till ett lösenord och därmed besegra syftet att automatisera hela processen.

    Om du använder en delad server och är orolig för att ditt lösenord lagras i ren text och läsbar med root, skapa ett kasta bort Gmail-konto eller använd en e-postserver som inte kräver någon typ av autentisering i första hand.

    För att försäkra dig om att allt är korrekt konfigurerat, låt oss prova ett test-e-postmeddelande:

    $ echo "Testing" | mail -s "Testing mail setup" anvä[email protected]

    "Testing" kommer att ligga i e-postens kropp och ämnet kommer att vara "Testing mail setup." Kontrollera din e-post för att se till att du har tagit emot det.

    Skriva ett skript för e-postmeddelandena

    Nu när vi kan skicka e-postmeddelanden från kommandoraden, låt oss skriva ett skript som kommer att skicka oss några grundläggande uppgifter om vårt system.

    #! / Bin / bash

    # Kontrollera hårddiskutrymme

    eko "Hårddiskutrymme:"> /home/geek/email.txt

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

    # Lista de användare som är inloggade

    echo "Användare som är inloggade för tillfället:" >> /home/geek/email.txt

    vem >> /home/geek/email.txt

    # Lista pågående processer

    eko "Löpande processer:" >> /home/geek/email.txt

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

    # Skicka e-postmeddelandet

    cat /home/geek/email.txt | mail -s "Daglig serverinformation" anvä[email protected]

    # Ta bort filen som vi skapade

    rm /home/geek/email.txt

    Självklart kan du få mycket mer djupgående med ditt skript och till och med göra formateringen lite trevligare, men det här ser utmatningen ut i vår email:

    Nu när skriptet är skrivet och testat kan vi använda cron för att automatiskt utföra det samtidigt på samma gång varje dag. I det här exemplet kommer vi att konfigurera e-postmeddelandet som skickas klockan 2:00 varje morgon, så vi kan gå igenom uppgifterna senare den dagen.

    $ crontab -e

    För 2:00 e-postmeddelanden, lägg till:

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

    Vi har skrivit en hel artikel om crontab-filer om du behöver mer hjälp med den här delen.

    Automatiserade e-postmeddelanden i Windows

    Att skicka e-post på kommandoraden är möjligt via PowerShell, men vi har funnit att implementering av denna funktionalitet är mycket lättare med tredjepartsprogram, särskilt när du använder Gmail. SendEmail är ett gratis program tillgängligt för Windows som gör integration med Windows Task Scheduler och Gmail en bris. Klicka på länken ovan för att ladda ner den senaste kopian, och se till att du tar tag i den TLS-stödda versionen.

    När du har laddat ner SendEmail, ta bort zip-filen och lägg innehållet någonstans så att du kan lagra dem så länge du planerar att skicka automatiserade e-postmeddelanden. I det här exemplet kommer vi bara att lagra programmet i C: \ SendEmail

    Låt oss testa ut SendEmail för att få en snabb känsla för hur det fungerar. Öppna en kommandotolk genom att skriva cmd i menyn Start eller Kör (Ctrl + R).

    Med kommandotolken öppen, använd kommandot för ändringskatalog för att navigera till var du lagrade SendEmail-filerna.

    cd C: \ SendEmail

    Nu kan vi försöka skicka ett test-e-mail med följande kommando:

    sendEmail -f anvä[email protected] -t anvä[email protected] -s smtp.gmail.com:587 -xu användarnamn -xp lösenord -u "Test e-post ämne" -m "Detta är ett test email."

    Uppenbarligen ersätt "användarnamn" och "lösenord" med ditt kontouppgifter innan du utför kommandot.

    Här är vad kommandot ovan egentligen gör:

    skicka epost exekverar programmet.

    -f - från adress

    -t - att poängtera

    -s - SMTP-server

    -xu - konto användarnamn

    -xp - konto lösenord

    -u - e-post ämne

    -m - e-postkodtext

    Kontrollera din inkorg för att försäkra dig om att du har fått testmailen, och vi kan fortsätta skriva ett skript som skickar oss serverinformation.

    Skriva ett skript för e-postmeddelandena

    För att få ut mesta möjliga av vårt manus skriver vi det för PowerShell. Öppna Windows PowerShell ISE genom att skriva powershell_ise.exe i en Run prompt (Ctrl + R).

    På höger sida av PowerShell ISE-fönstret kan du lista alla kommandon som PowerShell kan exekvera. Detta borde ge dig en bra start på att generera de typer av information som du behöver rapportera. I ditt skript kan du också ringa på program från tredje part för att utmata information också (dvs SendEmail är en tredje part, men PowerShell och cmd kan använda den för att utföra uppgifter som de normalt inte kan).

    För vårt exemplarskript kommer vi att kontrollera den aktuella diskanvändningen på C-enheten, visa de pågående processerna och visa alla filer som för närvarande delas ut över nätverket.

    # Kontrollera hårddiskutrymme

    echo "C: Kör användning:"> C: \ SendEmail \ info.txt

    Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Välj-Objektstorlek, FreeSpace >> C: \ SendEmail \ info.txt

    # Lista pågående processer

    eko "Löpande processer:" >> C: \ SendEmail \ info.txt

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

    # Lista de filer / mappar som för närvarande delas

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

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

    # Skicka e-postmeddelandet

    skriv C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f anvä[email protected] -t anvä[email protected] -s smtp.gmail.com:587 -xu användarnamn -xp lösenord -u "Daily server info"

    # Ta bort filen som vi har gjort

    rm C: \ SendEmail \ info.txt

    I det här skriptet skickas olika uppgifter till C: \ SendEmail \ info.txt, och sedan skickas texten i det dokumentet till oss innan det tas bort. Spara ditt skript med en PS1-filtillägg (PowerShell-fil).

    När ditt skript är klart kör ett snabbtest från en Kör prompt så att den fungerar ordentligt.

    Använd bara powershell kommando med a -fil argument och ange sökvägen till ditt skript.

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

    Kontrollera din inkorg för att se till att du har fått e-postmeddelandet - om inte, se över ditt script för syntaxfel. Så här ser den genererade e-posten från vårt exemplarskript ut:

    Du kan spela runt med formateringen (som echoing tomma rader mellan text) för att få det att visa bättre på din enhet, eller bättre men du kan använda ett tredjepartsprogram som kommer att mata ut den nödvändiga informationen i ett mer läsbart format än Windows gör ( Skriptprocessen kommer fortfarande att vara densamma).

    När du har utarbetat kinks i ditt skript kan du använda Windows Task Scheduler för att automatisera det. Öppna Windows Task Scheduler via Start-menyn.

    Med Aktivitetsschemaläggaren öppen väljer du Åtgärd> Skapa grundläggande uppgift.

    Namnge den här uppgiften något som "Daily email script" och klicka på nästa. På nästa skärm väljer du den frekvens som du vill att ditt e-postskript ska köra, troligen dagligen. Välj sedan den tid du vill att skriptet ska springa och klicka på nästa.

    Nu borde du vara på "Action" -delen av guiden, välj "Starta ett program" och ange samma text som vi angav Körprompten tidigare för att testa vårt skript.

    Slå sedan och klicka på Ja i det här fönstret:

    Klicka på Slutför på den sista menyn, och du är redo att schemalägga dina automatiska e-postmeddelanden.