Skip to main content

Slik genererer og sender du automatisk datastatistikk

Slik genererer og sender du automatisk datastatistikk

Geoffrey Carr

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 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 begge med følgende kommando:

$ sudo apt-get install ssmtp mailutils

Når disse 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 all tekst i filen og kopiere / lime inn disse innstillingene, hvis du vil):

# This address will receive the emails, so enter your own email here if you want to receive them.

[email protected]

# Specify the email server here (leave as is if you’re using Gmail).

mailhub=smtp.gmail.com:587

# The domain name that the mail will come from.

rewriteDomain=gmail.com

# The email address that these emails should be from.

[email protected]

# SSL/TLS settings, required for Gmail and most other mail servers.

UseTLS=Yes

UseSTARTTLS=Yes

# The username and password to your Gmail account.

AuthUser=username

AuthPass=password

# Allow the ability to specify a from address different than the one above.

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 username.username /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" 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

# Check hard drive space

echo 'Hard drive space:' > /home/geek/email.txt

df -h >> /home/geek/email.txt

# List the users that are logged in

echo 'Users currently logged in:' >> /home/geek/email.txt

who >> /home/geek/email.txt

# List currently running processes

echo 'Running processes:' >> /home/geek/email.txt

ps -e >> /home/geek/email.txt

# Send the email

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

# Delete the file we created

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 ser utgangen ut i vår epost:

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 -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 tredjepartsapps, 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 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 username -xp password -u 'Test email subject' -m 'This is a test email.'

Du må selvsagt erstatte "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 - til adresse

-s - SMTP-server

-xu - Konto brukernavn

-xp - bruker passord

-u - e-post Emne

-m - E-post kropps tekst

Sjekk innboksen din for å forsikre deg om at du har mottatt test-e-posten, 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 nå deles ut over nettverket.

# Check hard drive space

echo 'C: Drive Usage:' > C:SendEmailinfo.txt

Get-WmiObject win32_LogicalDisk -Filter 'DeviceID='C:'' | Select-Object Size,FreeSpace >> C:SendEmailinfo.txt

# List currently running processes

echo 'Running processes:' >> C:SendEmailinfo.txt

get-process >> C:SendEmailinfo.txt

# List the files/folders currently being shared

echo 'SMB shares:' >> C:SendEmailinfo.txt

get-smbshare >> C:SendEmailinfo.txt

# Send the email

type C:SendEmailinfo.txt | C:SendEmailsendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u 'Daily server info'

# Delete the file we made

rm C:SendEmailinfo.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-spørring for å sikre at den fungerer som den skal.

Bare bruk powershell kommandoen med a -file argument og spesifiser banen til skriptet ditt.

powershell -file 'c:SendEmaildaily-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 bedre på enheten din, eller enda bedre, kan du bruke et tredjepartsprogram som vil utgjøre nødvendig info 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 Aktivitetsplanleggeren er åpen, velger du Handling> Opprett 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.

Hit neste og klikk på Ja i dette vinduet:

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

Link
Plus
Send
Send
Pin