11Jul

Sådan genereres og e-mailes computerstatistik automatisk

Det er vigtigt at tjekke forskellige logdata og statistikker på din server hver dag, men det vokser til at være kedelig. Ville det ikke være rart at få en enkelt email med alle højdepunkterne hver dag, så du behøver ikke engang at komme på serveren for at se efter problemer? Denne vejledning viser dig, hvordan du konfigurerer automatiserede e-mails på Linux og Windows.

Vi dækker specifikt dette for Ubuntu og Windows 8.1, med Gmail bruges som e-mail-serveren, som mail er sendt fra. Hvis du har en anden version af Linux eller Windows, eller foretrækker at bruge en anden e-mail-tjeneste, skal vejledningen her være let at tilpasse.

Automatiserede e-mails i Linux

Vi skal bruge to forskellige pakker til at udføre dette, ssmtp og mailutils, så installer dem begge med følgende kommando:

$ sudo apt-get install ssmtp mailutils

Når de er installeret, har vi brug forfor at foretage nogle ændringer i SSMTP-konfigurationsfilen:

$ sudo vi /etc/ssmtp/ ssmtp.conf

Rediger filen med disse ændringer( det er sikkert at slette al tekst i filen og kopiere / indsætte disse indstillinger, hvis du vil):

# Denne adresse vil modtage e-mails, så indtast din egen email her, hvis du vil modtage dem.

[email protected]

# Angiv e-mail-serveren her( lad det være, hvis du bruger Gmail).

mailhub = smtp.gmail.com: 587

# Domænenavnet, som mailen kommer fra.

rewriteDomain = gmail.com

# Den e-mailadresse, som disse e-mails skal være fra.

[email protected]

# SSL / TLS-indstillinger, der kræves til Gmail og de fleste andre mailservere.

UseTLS = Ja

BrugSTARTTLS = Ja

# Brugernavnet og adgangskoden til din Gmail-konto.

AuthUser = brugernavn

AuthPass = adgangskode

# Tillad muligheden for at angive en anden adresse end den ovenstående.

FromLineOverride = ja

Når du er færdig med at redigere filen, vil du gerne ændre tilladelserne, da din Gmail-adgangskode er gemt i ren tekst.

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

$ sudo chown brugernavn.usnavn /etc/ssmtp/ ssmtp.conf

Det er altid mere sikkert at gøre rod til ejeren af ​​filen, men så skal vi bruge sudo-kommandoen i vores script, og det villebedt os om en adgangskode og derved besejre formålet med at automatisere hele processen.

Hvis du bruger en delt server og er bekymret for, at dit kodeord bliver lagret i ren tekst og læsbar af root, skal du oprette en throwaway Gmail-konto eller bruge en e-mail-server, der ikke kræver nogen form for godkendelse i første omgang.

For at sikre, at alt er konfigureret korrekt, lad os prøve en test email:

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

"Testing" kommer til at ligge i emnet, og emnet bliver "Testing mail setup." Kontroller din email for at sikre dig at du har modtaget den.

Skrivning af et script til emails

Nu hvor vi kan sende e-mails fra kommandolinjen, lad os skrive et script, der vil sende os nogle grundlæggende oplysninger om vores system.

#!/bin/ bash

# Kontroller harddiskplads

ekko "Harddiskplads:" & gt;/home/geek/ email.txt

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

# Liste de brugere, der er logget ind

echo "Brugere der er logget ind:" & gt; & gt;/home/geek/ email.txt

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

# Liste i øjeblikket kører processer

echo "Løbende processer:" & gt; & gt;/home/geek/ email.txt

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

# Send e-mailen

cat /home/geek/ email.txt |mail -s "Daily server information" [email protected]

# Slet filen, vi oprettede

rm /home/geek/ email.txt

Selvfølgelig kan du få meget mere dybde med scriptet og endda gøre formatering lidt pænere, menDette ser udgangspunktet i vores email:

Nu, da scriptet er skrevet og testet, kan vi bruge cron til automatisk at udføre det samtidigt på samme tid hver dag. I dette eksempel vil vi konfigurere den e-mail, der skal sendes klokken 2:00 hver morgen, så vi kan gennemgå dataene senere på dagen.

$ crontab-

For 2:00 e-mails, tilføj:

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

Vi har skrevet en hel artikel om crontab-filer, hvis du har brug for mere hjælp med denne del.

Automatiserede e-mails i Windows

Det er muligt at sende e-mails på kommandolinjen via PowerShell, men vi har fundet ud af, at implementering af denne funktionalitet er meget lettere med tredjeparts apps, især når du bruger Gmail. SendEmail er et gratis program til rådighed for Windows, der gør integration med Windows Task Scheduler og Gmail en brise. Klik på linket ovenfor for at downloade den nyeste kopi, og sørg for at tage fat i den TLS-understøttede version.

Når du har downloadet SendEmail, skal du pakke ud zip-filen og lægge indholdet et sted, hvor du kan gemme dem, så længe du planlægger at sende automatiserede e-mails. I dette eksempel skal vi bare gemme programmet i C: \ SendEmail

Lad os teste SendEmail for at få en hurtig følelse af, hvordan det virker.Åbn en kommandoprompt ved at skrive cmd i menuen Start eller Kør( Ctrl + R).

Når kommandoprompten er åben, skal du bruge kommandoen til ændring af mappe til at navigere til, hvor du gemte SendEmail-filerne.

cd C: \ SendEmail

Nu kan vi forsøge at sende en test email med følgende kommando:

sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu brugernavn -xppassword -u "Test email subject" -m "Dette er en test email."

Du skal selvfølgelig erstatte "brugernavn" og "adgangskode" med dine kontooplysninger før du udfører kommandoen.

Her er hvad kommandoen ovenfor faktisk gør:

sendEmail udfører programmet.

-f - fra adresse

-t - til adresse

-s - SMTP-server

-xu - konto brugernavn

-xp - konto adgangskode

-u - email-emne

-m - email body text

Kontroller din indbakke for at sikre digdu har modtaget test emailen, og så kan vi fortsætte med at skrive et script, der vil sende os serverinformation.

Skrivning af et script til emails

For at få mest muligt ud af vores script, skal vi skrive det til PowerShell.Åbn Windows PowerShell ISE ved at skrive powershell_ise.exe til en Run prompt( Ctrl + R).

På højre side af PowerShell ISE-vinduet kan du liste alle kommandoer, som PowerShell kan udføre. Dette bør give dig en god start på at generere de typer oplysninger, du har brug for rapporteret. I dit script kan du også ringe til tredjeparts programmer for at uddata oplysninger også( dvs. SendEmail er en tredjepartsapp, men PowerShell og cmd kan bruge den til at udføre opgaver, som de normalt ikke kan).

For vores eksempel script vil vi kontrollere den aktuelle diskbrug af C-drevet, vise de igangværende processer og vise alle filer, der for øjeblikket deles ud over netværket.

# Kontroller harddiskplads

ekko "C: Kør brug:" & gt;C: \ SendEmail \ info.txt

Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Vælg-objektstørrelse, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt

# Liste i øjeblikket kørende processer

echo "Løbende processer:" & gt; & gt;C: \ SendEmail \ info.txt

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

# Liste de filer / mapper, der for øjeblikket deles

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

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

# Send e-mailen

type C: \ SendEmail \ info.txt |C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu brugernavn -xp password -u "Daglig server info"

# Slet filen, vi lavede

rm C: \ SendEmail \ info.txt

I dette script udleveres forskellige oplysninger til C: \ SendEmail \ info.txt, og derefter sendes teksten i det pågældende dokument til os, inden den bliver slettet. Gem dit script med en PS1 filudvidelse( PowerShell-fil).

Når dit script er færdigt, skal du køre en hurtig test fra en Run-prompt for at sikre, at den fungerer korrekt.

Brug bare kommandoen powershell med et fil-argument og specificer stien til dit script.

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

Tjek din indbakke for at sikre dig, at du modtog e-mailen - hvis ikke, se over dit script for syntaksfejl. Sådan ser den genererede email fra vores eksempel script ud:

Du kan lege med formateringen( som f.eks. Ekko tomme linjer mellem tekst) for at gøre det mere pænt på din enhed, eller endnu bedre kan du bruge et tredjepartsprogram, der vilUdgiv den nødvendige information i et mere læsbart format end Windows gør( scripting processen vil stadig være den samme).

Når du har udarbejdet kinks i dit script, kan du bruge Windows Task Scheduler til at automatisere det.Åbn Windows Task Scheduler via menuen Start.

Når Opgaveplanlæggeren er åben, skal du vælge Action & gt;Opret grundlæggende opgave.

Navngiv denne opgave noget som "Daily email script" og klik på Næste. På den næste skærm skal du vælge den frekvens, som du gerne vil have dit email script til at køre, sandsynligvis dagligt. Vælg derefter den tid, du vil have, at scriptet skal køre, og tryk derefter på næste.

Nu skal du være på "Handling" -delen af ​​guiden, vælg "Start et program" og indtast den samme tekst, som vi har indtastet i Kør-prompt tidligere for at teste vores script.

Træk næste og tryk derefter Ja på dette vindue:

Klik på Afslut på den sidste menu, og du er færdig med at planlægge dine automatiske e-mails.