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 kontrollere problemer? Denne vejledning viser dig, hvordan du konfigurerer automatiserede e-mails på Linux og Windows.
Vi vil specifikt dække dette for Ubuntu og Windows 8.1, med Gmail bliver brugt 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 disse er installeret, skal vi foretage nogle ændringer i SSMTP-konfigurationsfilen:
$ sudo vi /etc/ssmtp/ssmtp.conf
Rediger filen med disse ændringer (det er sikkert at slette al teksten 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.
# Angiv e-mail-serveren her (lad det være, hvis du bruger Gmail).
mailhub = smtp.gmail.com: 587
# Domænenavnet, som posten kommer fra.
rewriteDomain = gmail.com
# Den e-mailadresse, som disse e-mails skal være fra.
# SSL / TLS-indstillinger, der kræves til Gmail og de fleste andre mailservere.
UseTLS = Ja
UseSTARTTLS = Ja
# Brugernavnet og adgangskoden til din Gmail-konto.
AUTHUSER = brugernavn
AuthPass = kodeord
# Tillad muligheden for at angive en fra en anden adresse end den ovenstående.
FromLineOverride = ja
Når du er færdig med at redigere filen, vil du ændre tilladelserne, da din Gmail-adgangskode er gemt i ren tekst.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown brugernavn.brugernavn /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 ville bede os om en adgangskode og dermed besejre formålet med at automatisere hele processen.
Hvis du bruger en delt server og er bekymret for, at dit kodeord bliver gemt 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 e-mailens krop, og emnet bliver "Testing af e-mail-opsætning." Kontroller din e-mail for at sikre, at du har modtaget det.
Skrive et script til e-mails
Nu da 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 plads på harddisken
ekko "Harddiskplads:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Liste de brugere, der er logget ind
echo "Brugere der er logget ind:" >> /home/geek/email.txt
hvem >> /home/geek/email.txt
# Liste i øjeblikket kørende processer
ekko "Løbende processer:" >> /home/geek/email.txt
ps -e >> /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 dybtgående med dit script og endda gøre formateringen lidt pænere, men det er hvad produktionen ser ud i vores email:
Nu da scriptet er skrevet og testet, kan vi bruge cron til automatisk at udføre det samtidig på 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 -e
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
At sende e-mails på kommandolinjen er mulig 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 udpakke 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 -xp password -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:
Send e-mail
udfører programmet.
-f
- fra adresse
-t
- at adressere
-s
- SMTP server
-xu
- konto brugernavn
-xp
- konto kodeord
-u
- email emne
-m
- email body text
Tjek din indbakke for at sikre, at du har modtaget test-emailen, og så kan vi fortsætte med at skrive et script, der vil sende os serveroplysninger.
Skrive et script til e-mails
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 de 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 tredjeparts app, 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 plads på harddisken
ekko "C: Kør brug:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Vælg-Objektstørrelse, FreeSpace >> C: \ SendEmail \ info.txt
# Liste i øjeblikket kørende processer
ekko "Løbende processer:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Liste de filer / mapper, der for øjeblikket deles
ekko "SMB aktier:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Send e-mailen
skriv 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 scriptet er færdigt, skal du køre en hurtig test fra en Run-prompt for at sikre, at den fungerer korrekt.
Brug bare PowerShell
kommando med a -fil
argument og angive 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 bedre endnu, du kan bruge et tredjepartsprogram, der udsender den nødvendige information i et 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 den. Åbn Windows Task Scheduler via menuen Start.
Når Aktivitetsplanlæggeren er åben, skal du vælge Handling> 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 kom ind i Kør-prompt tidligere for at teste vores script.
Hit 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.