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):
# This address will receive the emails, so enter your own email here if you want to receive them.
# 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.
# 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
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 username.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 ci richiederebbe una password, vanificando in tal modo lo scopo di automatizzare l'intero processo.
Se stai utilizzando 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 'Testing' | 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 averlo ricevuto.
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
# 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
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:
$ 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 più 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. Fai clic sul link qui sopra per scaricare la copia più recente e assicurati 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, andremo a memorizzare 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).
cd C:SendEmail
Ora possiamo provare a inviare una email di prova con il seguente comando:
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.'
Ovviamente, sostituire "username" e "password" con le credenziali dell'account prima di eseguire il comando.
Ecco cosa fa effettivamente il comando sopra:
sendEmail
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 un prompt Esegui (Ctrl + R).
# 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
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:SendEmaildaily-email.ps1'
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.
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.