Nous couvrirons spécifiquement cela pour Ubuntu et Windows 8.1, Gmail étant utilisé comme serveur de messagerie à partir duquel le courrier est envoyé. Si vous avez une autre version de Linux ou Windows, ou si vous préférez utiliser un autre service de messagerie, les instructions ici devraient être facilement adaptables.
Emails automatisés sous Linux
Pour ce faire, nous allons utiliser deux packages différents, ssmtp et mailutils, donc installez-les tous les deux avec la commande suivante:
$ sudo apt-get install ssmtp mailutils
Une fois ceux-ci installés, nous devons apporter quelques modifications au fichier de configuration SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Modifiez le fichier avec ces modifications (vous pouvez simplement effacer tout le texte du fichier et copier / coller ces paramètres, si vous le souhaitez):
# 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
Une fois le fichier modifié, vous souhaiterez modifier les autorisations car votre mot de passe Gmail est stocké en texte brut.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
Il est toujours plus sûr de désigner root le propriétaire du fichier, mais nous devrions alors utiliser la commande sudo dans notre script et nous demander un mot de passe, ce qui irait à l’encontre de l’automatisation de tout ce processus.
Si vous utilisez un serveur partagé et que vous craignez que votre mot de passe soit stocké en texte brut et lisible par root, créez un compte Gmail jetable ou utilisez un serveur de messagerie qui ne nécessite aucun type d'authentification.
Pour nous assurer que tout est configuré correctement, essayons un email de test:
$ echo 'Testing' | mail -s 'Testing mail setup' [email protected]
"Test" figurera dans le corps de l'e-mail et le sujet sera "Test de configuration du courrier." Vérifiez votre courrier électronique pour vous assurer que vous l'avez bien reçu.
Écrire un script pour les emails
Maintenant que nous pouvons envoyer des courriels à partir de la ligne de commande, écrivons un script qui nous enverra des informations de base sur notre système.
#!/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
Évidemment, vous pouvez approfondir votre script et même améliorer le formatage, mais voici à quoi ressemble la sortie dans notre courrier électronique:
$ crontab -e
Pour les e-mails à 2h00, ajoutez:
0 2 * * * /home/geek/script.sh
Nous avons écrit un article entier sur les fichiers crontab si vous avez besoin d’aide supplémentaire pour cette partie.
Emails automatisés sous Windows
L'envoi d'e-mails en ligne de commande est possible via PowerShell, mais nous avons constaté que l'implémentation de cette fonctionnalité est beaucoup plus simple avec les applications tierces, en particulier lorsque vous utilisez Gmail. SendEmail est un programme gratuit disponible pour Windows qui facilite l’intégration avec le Planificateur de tâches Windows et Gmail. Cliquez sur le lien ci-dessus pour télécharger la dernière version et assurez-vous de bien saisir la version prise en charge par TLS.
Une fois que vous avez téléchargé SendEmail, extrayez le fichier zip et placez le contenu dans un endroit où vous pourrez le stocker aussi longtemps que vous envisagez d’envoyer des courriels automatisés. Dans cet exemple, nous allons simplement stocker le programme dans C: SendEmail
Laissez-nous tester SendEmail pour avoir une idée rapide de la façon dont cela fonctionne. Ouvrez une invite de commande en tapant cmd dans le menu Démarrer ou Exécuter (Ctrl + R).
cd C:SendEmail
Nous pouvons maintenant essayer d'envoyer un email de test avec la commande suivante:
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.'
Évidemment, remplacez «nom d'utilisateur» et «mot de passe» par les informations d'identification de votre compte avant d'exécuter la commande.
Voici ce que fait la commande ci-dessus:
sendEmail
exécute le programme.
-f
- de l'adresse
-t
- Adresser
-s
- serveur SMTP
-xu
- Nom d'utilisateur du compte
-xp
- mot de passe du compte
-u
- Sujet du courriel
-m
- texte du corps de l'e-mail
Vérifiez votre boîte de réception pour vous assurer que vous avez bien reçu l'e-mail de test, puis nous pourrons écrire un script qui nous enverra des informations sur le serveur.
Écrire un script pour les emails
Pour tirer le meilleur parti de notre script, nous allons l'écrire pour PowerShell. Ouvrez Windows PowerShell ISE en tapant powershell_ise.exe dans une invite d'exécution (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
Dans ce script, diverses informations sont transmises à C: SendEmail info.txt, puis le texte de ce document nous est envoyé par courrier électronique avant d'être supprimé. Enregistrez votre script avec une extension de fichier ps1 (fichier PowerShell).
Une fois votre script terminé, exécutez un test rapide à partir d’une invite d'exécution pour vous assurer qu'il fonctionne correctement.
Il suffit d'utiliser le
powershell
commande avec un
-file
argument et spécifiez le chemin d'accès à votre script.
powershell -file 'c:SendEmaildaily-email.ps1'
Une fois que vous avez résolu les problèmes de votre script, vous pouvez utiliser le Planificateur de tâches Windows pour l’automatiser. Ouvrez le Planificateur de tâches Windows via le menu Démarrer.
Vous devriez maintenant être dans la partie «Action» de l'assistant, sélectionnez «Démarrer un programme» et entrez le même texte que celui que nous avons entré précédemment dans l'invite Exécuter pour tester notre script.