11Jul

Hur genererar och skickar du automatiskt datorstatistik

click fraud protection

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 dem båda med följande kommando:

$ sudo apt-get installera ssmtp mailutils

När de är installerade behöver viför att 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):

instagram viewer

# Den här adressen kommer att få e-postmeddelanden, 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

AnvändSTARTTLS = 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 = ja

När du är färdig 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 användarnamn. Användarnamn /etc/ssmtp/ ssmtp.conf

Det är alltid säkrare att skapa rot ägaren till filen, men då måste vi använda sudo-kommandot i vårt manus och det skulleFråga oss om ett lösenord och därigenom 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 av 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 testmail:

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

"Testing" kommer att ligga i meddelandets 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

echo "Hårddiskutrymme:" & gt;/home/geek/ email.txt

df -h & gt; & gt;/home/geek/ email.txt

# Lista de användare som är inloggade

echo "Användare som för närvarande är inloggade:" & gt; & gt;/home/geek/ email.txt

som & gt; & gt;/home/geek/ email.txt

# Lista som för närvarande kör processer

echo "Löpande processer:" & gt; & gt;/home/geek/ email.txt

ps -e & gt; & gt;/home/geek/ email.txt

# Skicka e-post

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

# Ta bort filen 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, menSå här ser produktionen ut i vårt mail:

Nu när manuset ä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 samma dag.

$ crontab-

För 2:00 e-post, 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 Run( 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 testmeddelande med följande kommando:

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

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:

sendEmail kör programmet.

-f - från adress

-t - för att adressera

-s - SMTP-server

-xu - konto användarnamn

-xp - konto lösenord

-u - e-post ämne

-m - email body text

Kontrollera din inkorg för att kontrolleradu fick test-e-postmeddelandet, och sedan kan vi fortsätta skriva ett skript som skickar oss serverinformation.

Skriva ett skript för e-postmeddelandena

För att få ut det mesta 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 bör 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 tredjepartsapp 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: Drive Usage:" & gt;C: \ SendEmail \ info.txt

Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Välj-objektstorlek, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt

# Lista som för närvarande kör processer

echo "Löpande processer:" & gt; & gt;C: \ SendEmail \ info.txt

get-process & gt; & gt;C: \ SendEmail \ info.txt

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

echo "SMB shares:" & gt; & gt;C: \ SendEmail \ info.txt

get-smbshare & gt; & gt;C: \ SendEmail \ info.txt

# Skicka e-posten

typ 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 "Daglig server info"

# Ta bort filen vi gjorde

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 det fungerar korrekt.

Använd bara kommandot powershell med ett -file-argument och specificera sökvägen till ditt skript.

powershell -fil "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 det genererade e-postmeddelandet 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 sig trevligare på din enhet, eller bättre men du kan använda ett tredjepartsprogram som kommer attmata 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 Action & gt;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 frekvensen som du vill att ditt e-postskript ska köra, troligen dagligen. Välj sedan den tid du vill att manuset ska köra, och slå därefter.

Nu borde du vara på "Handling" -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å därefter och klicka sedan 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.