Det er vigtigt at kontrollere forskellige logdata og statistikker på din server hver dag, men det bliver kedeligt. Ville det ikke være rart at modtage en enkelt e-mail 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 til Ubuntu og Windows 8.1, hvor Gmail bruges som e-mailserveren, som mail sendes fra. Hvis du har en anden version af Linux eller Windows eller foretrækker at bruge en anden e-mail-tjeneste, skal instruktionerne her let kunne tilpasses.
Automatiske e-mails i Linux
Vi skal bruge to forskellige pakker til at opnå 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 bare 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 e-mail 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 e-mailen kommer fra.
rewriteDomain = gmail.com
# Den e-mail-adresse, som disse e-mails skal være fra.
# SSL / TLS-indstillinger, krævet til Gmail og de fleste andre mailservere.
UseTLS = Ja
UseSTARTTLS = Ja
# Brugernavnet og adgangskoden til din Gmail-konto.
AuthUser = brugernavn
AuthPass = adgangskode
# Tillad muligheden for at angive en anden adresse end den ovenfor.
FromLineOverride = ja
Når du er færdig med at redigere filen, vil du gerne ændre tilladelserne, da din Gmail-adgangskode er gemt i almindelig tekst.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown brugernavn. brugernavn /etc/ssmtp/ssmtp.conf
Det er altid mere sikkert at gøre root ejeren af filen, men så bliver vi nødt til at bruge sudo-kommandoen i vores script, og det vil bede os om en adgangskode og derved besejre formålet med at automatisere hele denne proces.
Hvis du bruger en delt server og er bekymret for, at din adgangskode bliver gemt i almindelig tekst og kan læses af root, skal du oprette en smidbar 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-e-mail:
$ echo "Testing" | mail -s "Testing mail setup" [email protected]
"Test" findes i selve e-mailen, og emnet er "Test af mailopsætning." Tjek din e-mail for at sikre dig, at du har modtaget den.
Skrivning af et script til e-mails
Nu hvor vi er i stand til at sende e-mails fra kommandolinjen, lad os skrive et script, der sender os nogle grundlæggende oplysninger om vores system.
#! / Bin / Bash
# Tjek plads på harddisken
ekko "Harddiskplads:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Angiv de brugere, der er logget ind
ekko "Brugere, der er logget ind i øjeblikket:" >> /home/geek/email.txt
hvem >> /home/geek/email.txt
# Liste over aktuelt kørende processer
ekko "Kører processer:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Send e-mailen
kat /home/geek/email.txt | mail -s "Daily server information" [email protected]
# Slet den fil, vi oprettede
rm /home/geek/email.txt
Det er klart, at du kan få meget mere dybtgående med dit script og endda gøre formateringen lidt pænere, men sådan ser output ud i vores e-mail:
Nu hvor scriptet er skrevet og testet, kan vi bruge cron til automatisk at udføre det på samme tid hver dag. I dette eksempel konfigurerer vi den e-mail, der skal sendes klokken 02:00 hver morgen, så vi kan gennemgå dataene senere på dagen.
$ crontab -e
For e-mails fra 02:00 skal du tilføje:
0 2 * * * /home/geek/script.sh
Vi har skrevet en hel artikel om crontab-filer hvis du har brug for mere hjælp til denne del.
Automatiske e-mails i Windows
Afsendelse af e-mails på kommandolinjen er mulig via PowerShell, men vi har fundet ud af, at implementering af denne funktionalitet er meget lettere med tredjepartsapps, især når du bruger Gmail. Send e-mail er et gratis program til rådighed til Windows, der gør integration med Windows Task Scheduler og Gmail til en leg. Klik på linket ovenfor for at downloade den nyeste kopi, og sørg for at få fat i den TLS-understøttede version.
Når du har downloadet SendEmail, skal du udpakke zip-filen og placere 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 fornemmelse af, hvordan det fungerer. Åbn en kommandoprompt ved at skrive cmd i menuen Start eller Kør (Ctrl + R).
Når kommandoprompten er åben, skal du bruge kommandoen Change Directory til at navigere til det sted, hvor du gemte SendEmail-filerne.
cd C: \ SendEmail
Nu kan vi prøve at sende en test-e-mail med følgende kommando:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu brugernavn -xp adgangskode -u "Test e-mail-emne" -m "Dette er en test-e-mail."
Udskift naturligvis “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
-mønt
- brugernavn
-xp
- kontoadgangskode
-u
- email emne
-m
- e-mail-brødtekst
Tjek din indbakke for at sikre dig, at du har modtaget test-e-mailen, og så kan vi gå videre til at skrive et script, der sender os serveroplysninger.
Skrivning af 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 i en Kør-prompt (Ctrl + R).
På højre side af PowerShell ISE-vinduet kan du liste hver kommando, som PowerShell er i stand til at udføre. Dette skal give dig en god start på at generere de typer information, som du har brug for rapporteret. I dit script kan du også opfordre tredjepartsprogrammer til også at udføre information (dvs. SendEmail er en tredjepartsapp, men PowerShell og cmd kan bruge den til at udføre opgaver, de normalt ikke kan).
Til vores eksempler på script vil vi kontrollere den aktuelle diskbrug af C-drevet, vise de kørende processer og vise alle filer, der i øjeblikket deles ud over netværket.
# Tjek plads på harddisken
ekko "C: Drive Usage:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Vælg objektstørrelse, FreeSpace >> C: \ SendEmail \ info.txt
# Liste over aktuelt kørende processer
ekko "Kører processer:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Vis de filer / mapper, der aktuelt deles
ekko "SMB-delinger:" >> 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 adgangskode -u "Daglig serverinfo"
# Slet den fil, vi lavede
rm C: \ SendEmail \ info.txt
I dette script udsendes forskellige oplysninger til C: \ SendEmail \ info.txt, og derefter sendes teksten i dette dokument til os, inden det bliver slettet. Gem dit script med en ps1 filtypenavn (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
powershell
kommando med en
-fil
argument, og angiv stien til dit script.
powershell -fil "c: \ SendEmail \ daily-email.ps1"
Tjek din indbakke for at sikre dig, at du har modtaget e-mailen - hvis ikke, skal du se over dit script for syntaksfejl. Sådan ser den genererede e-mail fra vores eksempler på script ud:
Du kan lege med formateringen (f.eks. Ekko tomme linjer mellem tekst) for at gøre det vist pænere på din enhed, eller endnu bedre kan du bruge et tredjepartsprogram, der sender den nødvendige information i et mere læsbart format end Windows gør ( scriptingsprocessen 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 Start-menuen.
Når opgaveplanlæggeren er åben, skal du vælge Handling> Opret grundlæggende opgave.
Navngiv denne opgave noget som “Dagligt e-mail-script”, og klik på næste. På den næste skærm skal du vælge den hyppighed, som dit e-mail-script skal køre med, sandsynligvis dagligt. Vælg derefter det tidspunkt, du vil have scriptet til at køre, og tryk derefter på næste.
Nu skal du være i "Handling" -delen af guiden, vælg "Start et program" og indtast den samme tekst, som vi indtastede i Run-prompten tidligere for at teste vores script.
Hit næste og tryk derefter på Ja i dette vindue:
Klik på Udfør i den sidste menu, og du er færdig med at planlægge dine automatiske e-mails.