Slik genererer og sender du automatisk datastatistikk
Det er viktig å sjekke ulike loggdata og statistikk på serveren din hver dag, men det vokser til å være kjedelig. Ville det ikke vært fint å motta en e-post med alle høydepunktene hver dag, så du trenger ikke engang å komme på serveren for å sjekke om det er problemer? Denne veiledningen viser hvordan du konfigurerer automatiserte e-postmeldinger på Linux og Windows.
Vi vil spesifikt dekke dette for Ubuntu og Windows 8.1, med Gmail som e-postserver som e-posten sendes fra. Hvis du har en annen versjon av Linux eller Windows, eller foretrekker å bruke annen e-posttjeneste, bør instruksjonene her være lett å tilpasse.
Automatiserte e-poster i Linux
Vi skal bruke to forskjellige pakker for å oppnå dette, ssmtp og mailutils, så installer begge med følgende kommando:
$ sudo apt-get installer ssmtp mailutils
Når de er installert, må vi gjøre noen endringer i SSMTP-konfigurasjonsfilen:
$ sudo vi /etc/ssmtp/ssmtp.conf
Rediger filen med disse endringene (det er trygt å bare slette hele teksten i filen og kopiere / lime inn disse innstillingene, hvis du vil):
# Denne adressen vil motta e-postene, så skriv inn din egen e-post her hvis du vil motta dem.
# Angi e-postserveren her (la det være hvis du bruker Gmail).
mailhub = smtp.gmail.com: 587
# Domenenavnet som posten kommer fra.
rewriteDomain = gmail.com
# E-postadressen som disse e-postadressene skal være fra.
# SSL / TLS-innstillinger, kreves for Gmail og de fleste andre postservere.
UseTLS = Ja
UseSTARTTLS = Ja
# Brukernavnet og passordet til Gmail-kontoen din.
AUTHUSER = brukernavn
AuthPass = passord
# Tillat muligheten til å spesifisere en annen adresse enn den ovenfor.
FromLineOverride = yes
Når du er ferdig med å redigere filen, vil du endre tillatelsene siden Gmail-passordet ditt er lagret i ren tekst.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown brukernavn.brukernavn /etc/ssmtp/ssmtp.conf
Det er alltid sikrere å gjøre roten til eieren av filen, men da må vi bruke sudo-kommandoen i vårt skript, og det vil be oss om et passord, og dermed beseire formålet med å automatisere hele prosessen.
Hvis du bruker en delt server og er bekymret for at passordet ditt blir lagret i ren tekst og lesbar av rot, må du opprette en kaste Gmail-konto eller bruke en e-postserver som ikke krever noen type autentisering i utgangspunktet.
For å sikre at alt er konfigurert riktig, la oss prøve en test-e-post:
$ echo "Testing" | mail -s "Testing mail setup" [email protected]
"Testing" vil ligge i e-postens kropp, og emnet blir "Testing av e-postoppsett." Kontroller e-posten din for å sikre at du mottok den.
Skrive et skript for e-postene
Nå som vi kan sende e-post fra kommandolinjen, la oss skrive et skript som vil sende oss noen grunnleggende opplysninger om systemet vårt.
#! / Bin / bash
# Sjekk harddiskplass
ekko "Harddiskplass:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Oppgi brukerne som er logget inn
ekko "Brukere som er logget inn:" >> /home/geek/email.txt
hvem >> /home/geek/email.txt
# Liste som for øyeblikket kjører prosesser
ekko "Løpende prosesser:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Send e-posten
cat /home/geek/email.txt | post-s "Daglig serverinformasjon" [email protected]
# Slett filen vi opprettet
rm /home/geek/email.txt
Tydeligvis kan du få mye mer grundig med skriptet ditt og til og med gjøre formateringen litt finere, men dette er hva utgangen ser ut i vår e-post:
Nå som skriptet er skrevet og testet, kan vi bruke cron til å automatisk utføre det samtidig på hver dag. I dette eksemplet vil vi konfigurere e-posten som skal sendes klokken 2:00 hver morgen, så vi kan gå gjennom dataene senere den dagen.
$ crontab -e
For 2:00 e-post, legg til:
0 2 * * * /home/geek/script.sh
Vi har skrevet en hel artikkel om crontab-filer hvis du trenger mer hjelp med denne delen.
Automatiserte e-poster i Windows
Sende e-post på kommandolinjen er mulig gjennom PowerShell, men vi har funnet ut at implementering av denne funksjonaliteten er mye enklere med tredjepartsapper, spesielt når du bruker Gmail. SendEmail er et gratis program tilgjengelig for Windows som gjør integrasjon med Windows Task Scheduler og Gmail en bris. Klikk på koblingen ovenfor for å laste ned den nyeste kopien, og sørg for at du tar tak i den TLS-støttede versjonen.
Når du har lastet ned SendEmail, pakke ut zip-filen og sett innholdet et sted du kan lagre dem så lenge du planlegger å sende automatiserte e-poster. I dette eksemplet skal vi bare lagre programmet i C: \ SendEmail
La oss teste SendEmail for å få en rask følelse av hvordan det fungerer. Åpne en kommandoprompt ved å skrive cmd i Start eller Run (Ctrl + R) -menyen.
Med kommandoprompten åpen, bruk kommandoen endringskatalog for å navigere til hvor du lagret SendEmail-filene.
cd C: \ SendEmail
Nå kan vi prøve å sende en test-e-post med følgende kommando:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu brukernavn -xp passord -u "Test e-post emne" -m "Dette er en test e-post."
Du må selvsagt erstatte "brukernavn" og "passord" med kontoens legitimasjon før du utfører kommandoen.
Her er hva kommandoen ovenfor egentlig gjør:
Send e-post
utfører programmet.
-f
- fra adresse
-t
- til adresse
-s
- SMTP-server
-Xu
- konto brukernavn
-xp
- bruker passord
-u
- e-post Emne
-m
- e-post kropps tekst
Kontroller innboksen din for å forsikre deg om at du har mottatt test-eposten, og så kan vi fortsette å skrive et skript som sender oss serverinformasjon.
Skrive et skript for e-postene
For å få mest mulig ut av skriptet vårt, skal vi skrive det til PowerShell. Åpne Windows PowerShell ISE ved å skrive powershell_ise.exe i en Run prompt (Ctrl + R).
På høyre side av PowerShell ISE-vinduet kan du liste alle kommandoer som PowerShell kan utføre. Dette bør gi deg en god start på å generere typer informasjon du trenger rapportert. I skriptet kan du også ringe på tredjepartsprogrammer for å utdata informasjon også (det vil si SendEmail er en tredjepartsapp, men PowerShell og cmd kan bruke den til å utføre oppgaver de normalt ikke kan).
For vårt eksempelskript, vil vi sjekke gjeldende diskbruk av C-stasjonen, vise de kjørende prosessene, og vise alle filer som for øyeblikket deles ut over nettverket.
# Sjekk harddiskplass
ekko "C: Kjør bruk:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Velg-objektstørrelse, FreeSpace >> C: \ SendEmail \ info.txt
# Liste som for øyeblikket kjører prosesser
ekko "Løpende prosesser:" >> C: \ SendEmail \ info.txt
get-prosess >> C: \ SendEmail \ info.txt
# Oppgi filene / mappene som nå deles
ekko "SMB-aksjer:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Send e-posten
skriv C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu brukernavn -xp passord -u "Daglig server info"
# Slett filen vi laget
rm C: \ SendEmail \ info.txt
I dette skriptet sendes ulike opplysninger til C: \ SendEmail \ info.txt, og deretter sendes teksten i det dokumentet til oss før det blir slettet. Lagre skriptet ditt med en PS1 filutvidelse (PowerShell-fil).
Når skriptet er ferdig, må du kjøre en rask test fra en kjør-melding for å sikre at den fungerer som den skal.
Bare bruk kraftskall
kommandoen med a -fil
argument og spesifiser banen til skriptet ditt.
powershell -fil "c: \ SendEmail \ daily-email.ps1"
Sjekk innboksen din for å forsikre deg om at du mottok e-postmeldingen - hvis ikke, se over skriptet ditt for syntaksfeil. Slik ser den genererte e-posten fra vårt eksempelskript ut:
Du kan leke med formateringen (for eksempel ekko tomme linjer mellom tekst) for å gjøre det mer pent på enheten din, eller bedre, men du kan bruke et tredjeparts program som vil sende den nødvendige informasjonen i et lesbart format enn Windows gjør ( Skriptprosessen vil fortsatt være den samme).
Når du har utarbeidet kinks i skriptet ditt, kan du bruke Windows Task Scheduler til å automatisere det. Åpne Windows Oppgaveplanlegger via Start-menyen.
Når Oppgaveplanleggeren er åpen, velger du Handling> Opprett grunnleggende oppgave.
Gi denne oppgaven noe som "Daily email script" og klikk på neste. På den neste skjermen, velg frekvensen som du vil at e-postskriptet skal kjøre, sannsynligvis daglig. Deretter velger du tiden du vil at skriptet skal løpe, og treffer neste.
Nå bør du være på "Handling" -delen av veiviseren, velg "Start et program" og skriv inn samme tekst som vi skrev inn i Kjør-spørringen tidligere for å teste skriptet vårt.
Treff neste og klikk deretter Ja på dette vinduet:
Klikk Fullfør på den siste menyen, og du er ferdig med å planlegge dine automatiske e-poster.