11Jul

Come generare e inviare automaticamente le statistiche del computer

È importante controllare i vari dati di registro e le statistiche sul server ogni giorno, ma diventa noioso. Non sarebbe bello ricevere una singola email con tutti i punti salienti di ogni giorno, quindi non hai nemmeno bisogno di salire sul server per verificare i problemi? Questa guida ti mostrerà come configurare e-mail automatiche su Linux e Windows.

Lo tratteremo specificamente per Ubuntu e Windows 8.1, con Gmail utilizzato come server di posta elettronica da cui viene inviata la posta. Se hai un'altra versione di Linux o Windows, o preferisci usare un altro servizio di posta elettronica, le istruzioni qui dovrebbero essere facilmente adattabili.

Email automatiche in Linux

Utilizzeremo due pacchetti diversi per eseguire questo, ssmtp e mailutils, quindi installarli entrambi con il seguente comando:

$ sudo apt-get install ssmtp mailutils

Una volta installati, è necessarioper apportare alcune modifiche al file di configurazione SSMTP:

$ sudo vi /etc/ssmtp/ ssmtp.conf

Modifica il file con queste modifiche( è sicuro cancellare semplicemente tutto il testo nel file e copiare / incollare queste impostazioni, se lo desideri):

# Questo indirizzo riceverà le email, quindi inserisci qui la tua email se desideri riceverle.

[email protected]

# Specificare qui il server di posta elettronica( lasciare come è se si sta utilizzando Gmail).

mailhub = smtp.gmail.com: 587

# Il nome di dominio da cui proviene la posta.

rewriteDomain = gmail.com

# L'indirizzo email da cui dovrebbero essere inviate queste e-mail.

[email protected] Impostazioni

# SSL / TLS, richieste per Gmail e la maggior parte degli altri server di posta.

UseTLS = Yes

UseSTARTTLS = Yes

# Nome utente e password del tuo account Gmail.

AuthUser = nome utente

AuthPass = password

# Consente di specificare un indirizzo diverso da quello precedente.

FromLineOverride = yes

Quando hai finito di modificare il file, ti consigliamo di modificare le autorizzazioni poiché la tua password Gmail è memorizzata in testo normale.

$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf

$ sudo chown nomeutente.username /etc/ssmtp/ ssmtp.conf

È sempre più sicuro rendere root il proprietario del file, ma poi dovremmo usare il comando sudo nel nostro script e sarebberichiedici una password, annullando in tal modo lo scopo di automatizzare l'intero processo.

Se utilizzi un server condiviso e sei preoccupato che la tua password venga archiviata in chiaro e leggibile da root, crea un account Gmail usa e getta o utilizza un server di posta elettronica che non richiede alcun tipo di autenticazione.

Per assicurarti che tutto sia configurato correttamente, prova un messaggio di prova:

$ echo "Test" |mail -s "Testing mail setup" [email protected]

"Testing" sarà nel corpo dell'email e il soggetto sarà "Testing mail setup." Controlla la tua email per assicurarti di averla ricevuta.

Scrittura di uno script per le e-mail

Ora che siamo in grado di inviare e-mail dalla riga di comando, scriviamo uno script che ci invierà alcune informazioni di base sul nostro sistema.

#!/bin/ bash

# Controlla lo spazio del disco rigido

echo "Spazio su disco:" & gt;/home/geek/ email.txt

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

# Elenca gli utenti che hanno effettuato il login

echo "Utenti attualmente connessi:" & gt; & gt;/home/geek/ email.txt

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

# Elenco dei processi attualmente in esecuzione

echo "Processi in esecuzione:" & gt; & gt;/home/geek/ email.txt

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

# Invia l'email

cat /home/geek/ email.txt |mail -s "Informazioni sul server giornaliero" [email protected]

# Elimina il file creato

rm /home/geek/ email.txt

Ovviamente puoi ottenere molto più approfonditamente con il tuo script e persino rendere la formattazione un po 'più bella, maquesto è l'output che appare nella nostra email:

Ora che lo script è scritto e testato, possiamo usare cron per eseguirlo automaticamente alla stessa ora ogni giorno. In questo esempio, configureremo l'e-mail da inviare alle 2:00 ogni mattina, in modo che possiamo esaminare i dati più tardi quel giorno.

$ crontab -e

Per le e-mail 2:00, aggiungere:

0 2 * * * /home/geek/ script.sh

Abbiamo scritto un intero articolo sui file crontab se hai bisogno di ulteriore aiuto con questa parte. E-mail automatizzate

in Windows

L'invio di e-mail dalla riga di comando è possibile tramite PowerShell, ma abbiamo scoperto che l'implementazione di questa funzionalità è molto più semplice con le app di terze parti, soprattutto quando si utilizza Gmail. SendEmail è un programma gratuito disponibile per Windows che rende l'integrazione con Windows Task Scheduler e Gmail un gioco da ragazzi. Fare clic sul collegamento in alto per scaricare la copia più recente e assicurarsi di prendere la versione supportata da TLS.

Una volta scaricato SendEmail, estrai il file zip e metti il ​​contenuto da qualche parte in cui puoi memorizzarlo per tutto il tempo che intendi inviare email automatiche. In questo esempio, archiviamo il programma in C: \ SendEmail

Esaminiamo SendEmail per avere un'idea rapida di come funziona. Aprire un prompt dei comandi digitando cmd nel menu Start o Esegui( Ctrl + R).

Con il prompt dei comandi aperto, utilizzare il comando change directory per navigare dove sono stati archiviati i file SendEmail.

cd C: \ SendEmail

Ora possiamo provare a inviare un'email di prova con il seguente comando:

sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nome utente -xppassword -u "Oggetto di test dell'e-mail" -m "Questa è una email di prova."

Ovviamente, sostituire "username" e "password" con le credenziali dell'account prima di eseguire il comando.

Ecco come funziona il comando precedente:

sendEmail esegue il programma.

-f - dall'indirizzo

-t - per indirizzare

-s - server SMTP

-xu - nome utente dell'account

-xp - password dell'account

-u - oggetto dell'email

-m - testo del corpo dell'email

Controlla la tua casella di posta per assicurartihai ricevuto l'e-mail di prova, quindi possiamo passare alla scrittura di uno script che ci invierà le informazioni sul server.

Scrittura di uno script per le e-mail

Per ottenere il massimo dal nostro script, lo scriveremo per PowerShell. Apri Windows PowerShell ISE digitando powershell_ise.exe in un prompt Esegui( Ctrl + R).

Sul lato destro della finestra ISE di PowerShell, è possibile elencare tutti i comandi che PowerShell è in grado di eseguire. Questo dovrebbe darti un buon inizio nel generare i tipi di informazioni che hai bisogno di segnalare. Nel tuo script, puoi anche chiamare programmi di terze parti per produrre anche informazioni( ad esempio SendEmail è un'applicazione di terze parti, ma PowerShell e cmd possono usarlo per eseguire attività che normalmente non possono).

Per il nostro script di esempio, controlleremo l'attuale utilizzo del disco dell'unità C, mostreremo i processi attualmente in esecuzione e mostreremo tutti i file che vengono attualmente condivisi sulla rete.

# Controlla lo spazio del disco fisso

echo "C: Drive Usage:" & gt;C: \ SendEmail \ info.txt

Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Select-Object Size, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt

# Elenco dei processi attualmente in esecuzione

echo "Processi in esecuzione:" & gt; & gt;C: \ SendEmail \ info.txt

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

# Elenca i file / cartelle attualmente condivisi

echo "Condivisioni SMB:" & gt; & gt;C: \ SendEmail \ info.txt

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

# Invia l'email

tipo C: \ SendEmail \ info.txt |C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nome utente -xp password -u "Informazioni server giornaliero"

# Elimina il file creato

rm C: \ SendEmail \ info.txt

In questo script, varie informazioni vengono inviate a C: \ SendEmail \ info.txt, quindi il testo in quel documento ci viene inviato via email prima che venga cancellato. Salva il tuo script con un'estensione di file ps1( file PowerShell).

Al termine dello script, eseguire un test rapido da una richiesta di esecuzione per assicurarsi che funzioni correttamente.

Basta usare il comando powershell con un argomento -file e specificare il percorso del tuo script.

powershell -file "c: \ SendEmail \ daily-email.ps1"

Controlla la tua posta in arrivo per assicurarti di aver ricevuto l'e-mail - in caso contrario, controlla gli script per gli errori di sintassi. Ecco come appare la mail generata dal nostro script di esempio:

Puoi giocare con la formattazione( come echeggiare le linee vuote tra il testo) per renderlo più bello sul tuo dispositivo, o meglio ancora puoi usare un programma di terze parti cheinvia le informazioni necessarie in un formato più leggibile rispetto a Windows( il processo di scripting sarà sempre lo stesso).

Una volta individuati i nodi nel tuo script, puoi utilizzare l'Utilità di pianificazione di Windows per automatizzarla. Apri l'Utilità di pianificazione di Windows tramite il menu Start.

Con l'Utilità di pianificazione aperta, selezionare Azione & gt;Crea attività di base.

Assegna a questa attività qualcosa come "Script email giornaliero" e fai clic su Avanti. Nella schermata successiva, seleziona la frequenza con cui desideri eseguire lo script di posta elettronica, probabilmente ogni giorno. Quindi, scegli l'ora in cui desideri eseguire lo script e premi Avanti.

Ora dovresti essere nella parte "Azione" della procedura guidata, selezionare "Avvia un programma" e inserire lo stesso testo che abbiamo inserito nel prompt Esegui prima per testare il nostro script.

Premi su Avanti e poi su Sì in questa finestra:

Fai clic su Fine nell'ultimo menu e hai finito di programmare le tue email automatiche.