Come generare e inviare automaticamente le statistiche del computer
È importante controllare ogni giorno i vari dati di registro e le statistiche sul tuo server, 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 eventuali problemi? Questa guida ti mostrerà come configurare le e-mail automatiche su Linux e Windows.
Lo faremo in modo specifico 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
Useremo due diversi pacchetti per realizzare questo, ssmtp e mailutils, quindi installali entrambi con il seguente comando:
$ sudo apt-get install ssmtp mailutils
Una volta installati, è necessario 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 la tua email qui se vuoi riceverle.
# Specifica qui il server email (lascia come è se stai usando 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.
# Impostazioni SSL / TLS, richieste per Gmail e la maggior parte degli altri server di posta.
UseTLS = Sì
UseSTARTTLS = Sì
# Il nome utente e la password per il tuo account Gmail.
AuthUser = username
AuthPass = la password
# Permetti la possibilità di specificare un indirizzo da diverso da quello sopra.
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.nome /etc/ssmtp/ssmtp.conf
È sempre più sicuro rendere root il proprietario del file, ma poi dovremmo usare il comando sudo nel nostro script e ci richiederebbe una password, vanificando in tal modo lo scopo di automatizzare l'intero processo.
Se stai usando un server condiviso e sei preoccupato che la tua password sia archiviata in chiaro e leggibile da root, crea un account Gmail usa e getta o usa un server di posta elettronica che non richiede alcun tipo di autenticazione in primo luogo.
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.
Scrivere uno script per le email
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
# Controllare lo spazio sul disco rigido
echo "Spazio su disco fisso:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Elenca gli utenti che hanno effettuato l'accesso
echo "Utenti attualmente connessi:" >> /home/geek/email.txt
chi >> /home/geek/email.txt
# Elenca i processi attualmente in esecuzione
echo "Processi in esecuzione:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Invia l'email
cat /home/geek/email.txt | mail -s "Informazioni sul server giornaliero" [email protected]
# Elimina il file che abbiamo creato
rm /home/geek/email.txt
Ovviamente puoi ottenere molto più approfondimento con la tua sceneggiatura e persino rendere la formattazione un po 'più bella, ma questo è l'output che appare nella nostra email:
Ora che lo script è scritto e testato, possiamo usare cron per eseguirlo automaticamente ogni giorno alla stessa ora. 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.
Email automatiche 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, specialmente 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 inserisci il contenuto da qualche parte in cui puoi memorizzarlo per tutto il tempo che intendi inviare email automatiche. In questo esempio, stiamo solo andando a memorizzare il programma in C: \ SendEmail
Esaminiamo SendEmail per avere un'idea veloce 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 -xp password -u "Oggetto messaggio di prova" -m "Questa è un'e-mail di prova."
Ovviamente, sostituire "username" e "password" con le credenziali dell'account prima di eseguire il comando.
Ecco cosa fa effettivamente il comando sopra:
invia una email
esegue il programma.
-f
- dall'indirizzo
-t
- indirizzare
-S
- Server SMTP
-Xu
- nome utente dell'account
-xp
- password dell'account
-u
- oggetto dell'email
-m
- testo del corpo dell'e-mail
Controlla la tua casella di posta per assicurarti di aver ricevuto l'e-mail di prova, quindi possiamo passare alla scrittura di uno script che ci invierà le informazioni sul server.
Scrivere uno script per le email
Per ottenere il massimo dal nostro script, lo scriveremo per PowerShell. Apri Windows PowerShell ISE digitando powershell_ise.exe in una richiesta 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 ti servono. Nel tuo script, puoi anche chiamare i programmi di terze parti per produrre anche le 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.
# Controllare lo spazio sul disco rigido
echo "C: Drive Usage:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Select-Object Size, FreeSpace >> C: \ SendEmail \ info.txt
# Elenca i processi attualmente in esecuzione
echo "Processi in esecuzione:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Elenca i file / cartelle attualmente condivisi
echo "Condivisioni SMB:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Invia l'email
digitare 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 che abbiamo creato
rm C: \ SendEmail \ info.txt
In questo script, vengono inviate varie informazioni a C: \ SendEmail \ info.txt, quindi il testo in quel documento ci viene inviato via email prima che venga eliminato. Salva il tuo script con un'estensione di file ps1 (file PowerShell).
Terminato lo script, esegui un test rapido da una richiesta di esecuzione per assicurarti che funzioni correttamente.
Basta usare il powershell
comando con a -file
argomento e specificare il percorso del tuo script.
powershell -file "c: \ SendEmail \ daily-email.ps1"
Controlla la tua casella di posta per assicurarti di aver ricevuto l'e-mail; in caso contrario, controlla gli script per gli errori di sintassi. Ecco come appare l'e-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 che produrrà le informazioni necessarie in un formato più leggibile di 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> Crea attività di base.
Assegna un nome a questa attività 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 avanti e poi premi Sì in questa finestra:
Fai clic su Fine nell'ultimo menu e hai finito di programmare le tue e-mail automatiche.