Comment générer et envoyer automatiquement des statistiques d'ordinateur
Il est important de vérifier chaque jour diverses données de journal et statistiques sur votre serveur, mais cela devient de plus en plus fastidieux. Ne serait-il pas agréable de recevoir chaque jour un seul e-mail avec tous les points forts, de sorte que vous n’ayez même pas besoin de vous connecter au serveur pour vérifier les problèmes? Ce guide vous montrera comment configurer des courriels automatisés sous Linux et Windows..
Nous traiterons spécifiquement de cette question 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 installez ssmtp mailutils
Une fois ceux-ci installés, nous devons apporter quelques modifications au fichier de configuration SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Editez le fichier avec ces modifications (vous pouvez simplement effacer tout le texte du fichier et copier / coller ces paramètres, si vous le souhaitez):
# Cette adresse recevra les emails, alors entrez votre propre email ici si vous souhaitez les recevoir.
# Spécifiez le serveur de messagerie ici (laissez tel quel si vous utilisez Gmail).
mailhub = smtp.gmail.com: 587
# Le nom de domaine d'où viendra le courrier.
rewriteDomain = gmail.com
# L'adresse email à partir de laquelle ces emails doivent être.
nom_hô[email protected]
# Paramètres SSL / TLS, requis pour Gmail et la plupart des autres serveurs de messagerie.
UseTLS = Oui
UseSTARTTLS = Oui
# Le nom d'utilisateur et le mot de passe de votre compte Gmail.
AuthUser = nom d'utilisateur
AuthPass = mot de passe
# Permet la possibilité de spécifier une adresse de départ différente de celle ci-dessus.
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 du but d'automatiser tout ce processus..
Si vous utilisez un serveur partagé et que vous craignez que votre mot de passe soit stocké en texte clair 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 vous assurer que tout est configuré correctement, essayons un email de test:
$ echo "Testing" | mail -s "Test de la configuration du courrier" [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 sommes en mesure d'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
# Vérifier l'espace du disque dur
echo "Espace disque:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Liste les utilisateurs connectés
echo "Utilisateurs actuellement connectés:" >> >> /home/geek/email.txt
qui >> /home/geek/email.txt
# Liste les processus en cours d'exécution
echo "Running process:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Envoyer l'email
cat /home/geek/email.txt | mail -s "Informations quotidiennes sur le serveur" [email protected]
# Supprimer le fichier que nous avons créé
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:
Maintenant que le script est écrit et testé, nous pouvons utiliser cron pour l'exécuter automatiquement à la même heure chaque jour. Dans cet exemple, nous allons configurer l’envoi du courrier électronique tous les matins à 2 heures du matin afin que nous puissions consulter les données plus tard dans la journée..
$ crontab -e
Pour les e-mails à 2h00, ajoutez:
0 2 * * * /home/geek/script.sh
Nous avons écrit un article complet sur les fichiers crontab si vous avez besoin d'aide 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 vous assurer 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 emails automatisés. Dans cet exemple, nous allons simplement stocker le programme dans C: \ SendEmail
Testons SendEmail pour avoir une idée rapide de son fonctionnement. Ouvrez une invite de commande en tapant cmd dans le menu Démarrer ou Exécuter (Ctrl + R)..
Avec l'invite de commande ouverte, utilisez la commande change directory pour accéder à l'emplacement de stockage des fichiers SendEmail..
cd C: \ SendEmail
Nous pouvons maintenant essayer d’envoyer un e-mail test avec la commande suivante:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nom d'utilisateur -xp mot de passe -u "Objet de l'e-mail de test" -m "Ceci est un e-mail de test."
É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 la commande ci-dessus fait réellement:
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
-vous
- 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)..
Sur le côté droit de la fenêtre PowerShell ISE, vous pouvez répertorier toutes les commandes que PowerShell est capable d'exécuter. Cela devrait vous donner un bon départ pour générer les types d'informations que vous souhaitez rapporter. Dans votre script, vous pouvez également faire appel à des programmes tiers pour générer des informations (par exemple, SendEmail est une application tierce mais PowerShell et cmd peuvent l’utiliser pour accomplir des tâches qu’ils ne peuvent normalement pas accomplir)..
Pour notre exemple de script, nous allons vérifier l'utilisation actuelle du disque du lecteur C, afficher les processus en cours et tous les fichiers en cours de partage sur le réseau..
# Vérifier l'espace du disque dur
echo "C: Utilisation du lecteur:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Select-Object Size, FreeSpace >> C: \ SendEmail \ info.txt
# Liste les processus en cours d'exécution
echo "Processus en cours d'exécution:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Liste les fichiers / dossiers en cours de partage
echo "partages SMB:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Envoyer l'email
tapez C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nom d'utilisateur -xp mot de passe -u "Informations quotidiennes sur le serveur"
# Supprimer le fichier que nous avons créé
rm C: \ SendEmail \ info.txt
Dans ce script, diverses informations sont sorties dans 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).
Lorsque votre script est 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 -fichier
argument et spécifiez le chemin d'accès à votre script.
powershell -file "c: \ SendEmail \ daily-email.ps1"
Vérifiez votre boîte de réception pour vous assurer que vous avez bien reçu l'e-mail. Si ce n'est pas le cas, recherchez des erreurs de syntaxe dans votre script. Voici à quoi ressemble le courrier électronique généré à partir de notre exemple de script:
Vous pouvez jouer avec la mise en forme (telle que l'écho de lignes vides entre du texte) pour la rendre plus lisible sur votre appareil, ou mieux encore, vous pouvez utiliser un programme tiers qui affichera les informations nécessaires dans un format plus lisible que Windows ( le processus de script sera toujours le même).
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..
Le planificateur de tâches étant ouvert, sélectionnez Action> Créer une tâche de base..
Nommez cette tâche comme «Script de courrier électronique quotidien», puis cliquez sur Suivant. Sur l'écran suivant, sélectionnez la fréquence à laquelle vous souhaitez que votre script de messagerie soit exécuté quotidiennement. Ensuite, choisissez l’heure à laquelle vous souhaitez exécuter le script, puis cliquez sur Suivant..
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..
Cliquez sur Suivant puis sur Oui dans cette fenêtre:
Cliquez sur Terminer dans le dernier menu et la planification de vos courriels automatiques est terminée..