11Jul

Slik genererer og sender du automatisk datastatistikk

click fraud protection

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 guiden viser deg hvordan du konfigurerer automatiserte e-postmeldinger på Linux og Windows.

Vi vil dekke dette spesielt 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 lett tilpasses.

Automatiserte e-poster i Linux

Vi skal bruke to forskjellige pakker for å oppnå dette, ssmtp og mailutils, så installer dem begge med følgende kommando:

$ sudo apt-get install ssmtp mailutils

Når de er installert, trenger vifor å gjøre noen endringer i SSMTP-konfigurasjonsfilen:

$ sudo vi /etc/ssmtp/ ssmtp.conf

Rediger filen med disse endringene( det er trygt å slette all tekst i filen og kopiere / lime inn disse innstillingene, hvis du vil):

instagram viewer

# Denne adressen vil motta e-postene, så skriv inn din egen e-post her hvis du vil motta dem.

[email protected]

# 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

# Den e-postadressen som disse e-postadressene skal være fra.

[email protected]

# SSL / TLS-innstillinger, kreves for Gmail og de fleste andre postservere.

UseTLS = Ja

BrukSTARTTLS = Ja

# Brukernavnet og passordet til Gmail-kontoen din.

AuthUser = brukernavn

AuthPass = passord

# Tillat muligheten til å spesifisere en annen adresse enn den ovenfor.

FromLineOverride = ja

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 mer sikkert å lage root eieren av filen, men da måtte vi bruke sudo-kommandoen i vårt skript, og det villespør 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 e-postoppsett" [email protected]

"Testing" kommer til å 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:" & gt;/home/geek/ email.txt

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

# Liste brukerne som er logget inn

echo "Brukere som er logget inn:" & gt; & gt;/home/geek/ email.txt

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

# Liste som kjører i gang med prosesser

echo "Løpende prosesser:" & gt; & gt;/home/geek/ email.txt

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

# Send epost

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

# Slett filen vi opprettet

rm /home/geek/ email.txt

Åpenbart kan du få mye mer grundig med skriptet og til og med gjøre formateringen litt finere, menDette ser utgangen ut som 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 samme dag.

$ crontab-

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

Det å sende e-post på kommandolinjen er mulig gjennom PowerShell, men vi har funnet ut at implementering av denne funksjonaliteten er mye enklere med tredjepartsprogrammer, 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, trekk 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 til å 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 -xppassord -u "Test e-post emne" -m "Dette er en test e-post."

Åpenbart, erstatt "brukernavn" og "passord" med kontoens legitimasjon før du utfører kommandoen.

Her er hva kommandoen ovenfor egentlig gjør:

sendEmail utfører programmet.

-f - fra adresse

-t - for å adressere

-s - SMTP-server

-xu - konto brukernavn

-xp - konto passord

-u - email emne

-m - email body text

Sjekk innboksen for å være sikkerdu 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, 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 nå deles ut over nettverket.

# Sjekk harddiskplass

ekko "C: Kjør bruk:" & gt;C: \ SendEmail \ info.txt

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

# Liste som kjører i dag prosesser

echo "Løpende prosesser:" & gt; & gt;C: \ SendEmail \ info.txt

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

# Liste filene / mappene som nå deles

ekko "SMB-aksjer:" & gt; & gt;C: \ SendEmail \ info.txt

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

# Send e-posten

type 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 du er ferdig med skriptet, kjør du en rask test fra en Run-spørring for å sikre at den fungerer som den skal.

Bruk bare kommandoen powershell med et fil-argument og angi 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( som ekko tomme linjer mellom tekst) for å få det til å vises bedre på enheten din, eller enda bedre, kan du bruke et tredjepartsprogram som viloutput den nødvendige informasjonen i et mer 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 Action & gt;Lag grunnleggende oppgave.

Navngi 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 kjøre, 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 Ja på dette vinduet:

Klikk på Fullfør på den siste menyen, og du er ferdig med å planlegge dine automatiske e-poster.