11Jul

Comment générer et envoyer automatiquement des statistiques informatiques

Il est important de vérifier chaque jour les différentes données et statistiques du journal sur votre serveur, mais cela devient fastidieux. Ne serait-il pas agréable de recevoir un seul courriel avec tous les faits saillants chaque jour, de sorte que vous n'avez même pas besoin d'aller sur le serveur pour vérifier les problèmes? Ce guide vous montrera comment configurer les emails automatisés sur Linux et Windows.

Nous couvrirons spécifiquement ceci pour Ubuntu et Windows 8.1, Gmail étant utilisé comme serveur de courriel à partir duquel le courrier est envoyé.Si vous avez une autre version de Linux ou Windows, ou préférez utiliser un autre service de messagerie, les instructions ici doivent être facilement adaptables.

E-mails automatisés sous Linux

Nous allons utiliser deux paquets différents pour accomplir ceci, ssmtp et mailutils, donc installez les deux avec la commande suivante:

$ sudo apt-get install ssmtp mailutils

Une fois ceux-ci installés, nous avons besoinpour apporter quelques modifications au fichier de configuration SSMTP:

$ sudo vi /etc/ssmtp/ ssmtp.conf

Modifiez le fichier avec ces modifications( il est possible d'effacer tout le texte dans le fichier et de copier / coller ces paramètres, si vous le souhaitez):

# Cette adresse recevra les emails, alors entrez votre propre email ici si vous voulez les recevoir.

[email protected]

# Spécifiez le serveur de messagerie ici( laissez tel quel si vous utilisez Gmail).

mailhub = smtp.gmail.com: 587

# Le nom de domaine dont le mail proviendra.

rewriteDomain = gmail.com

# L'adresse e-mail à partir de laquelle ces e-mails doivent provenir.

[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

# Autorise la possibilité de spécifier une adresse différente de celle ci-dessus.

FromLineOverride = yes

Lorsque vous avez terminé d'éditer le fichier, vous devez 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 faire root le propriétaire du fichier, mais ensuite nous devrions utiliser la commande sudo dans notre script et il seraitnous invite à entrer un mot de passe, ce qui va à l'encontre du but 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 clair et lisible par root, créez un compte Gmail 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 "Testing mail setup" nom d'[email protected]

"Testing" sera dans le corps de l'email et le sujet sera "Test de configuration de la messagerie." Vérifiez votre email pour vous assurer que vous l'avez reçu.

Écrire un script pour les courriels

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érifiez l'espace disque dur

echo "Espace disque dur:" & gt;/home/geek/ email.txt

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

# Liste des utilisateurs connectés

echo "Utilisateurs actuellement connectés:" & gt; & gt;/home/geek/ email.txt

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

# Liste des processus en cours d'exécution

echo "En cours d'exécution:" & gt; & gt;/home/geek/ email.txt

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

# Envoyer l'email

cat /home/geek/ email.txt |mail -s "Informations sur le serveur journalier" [email protected]

# Supprimer le fichier que nous avons créé

rm /home/geek/ email.txt

Vous pouvez évidemment obtenir beaucoup plus de profondeur avec votre script et même rendre le formatage un peu plus agréable, maisVoici à quoi ressemble la sortie dans notre email:

Maintenant que le script est écrit et testé, nous pouvons utiliser cron pour l'exécuter automatiquement tous les jours à la même heure. Dans cet exemple, nous allons configurer l'email à envoyer à 2h00 tous les matins, afin que nous puissions passer en revue les données plus tard dans la journée.

$ crontab -e

Pour les emails de 2:00 AM, ajoutez:

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

Nous avons écrit un article complet sur les fichiers crontab si vous avez besoin de plus d'aide avec cette partie.

E-mails automatisés sous Windows

L'envoi de courriels en ligne de commande est possible via PowerShell, mais nous avons constaté que l'implémentation de cette fonctionnalité est beaucoup plus facile avec des applications tierces, en particulier lors de l'utilisation de Gmail. SendEmail est un programme gratuit disponible pour Windows qui facilite l'intégration avec Windows Task Scheduler et Gmail. Cliquez sur le lien ci-dessus pour télécharger la dernière copie et assurez-vous de récupérer 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 pouvez 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).

Lorsque l'invite de commande est ouverte, utilisez la commande change directory pour accéder à l'emplacement où vous avez stocké les fichiers SendEmail.

cd C: \ SendEmail

Maintenant, nous pouvons essayer d'envoyer un email de test avec la commande suivante:

sendEmail -f nom d'[email protected] -t nom d'[email protected] -s smtp.gmail.com:587 -xu nom d'utilisateur -xppassword -u "Test du sujet de l'e-mail" -m "Ceci est un e-mail de test."

De toute évidence, 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 - adresse

-t - adresse

-s - serveur SMTP

-xu - nom d'utilisateur du compte

-xp - mot de passe du compte

-u - objet de l'e-mail

-m - corps du message

Vérifiez votre boîte de réception pour vous assurervous avez reçu l'e-mail de test, puis nous pouvons passer à l'écriture d'un script qui nous envoie 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 Exécuter( 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 permettre de commencer à générer les types d'informations dont vous avez besoin. 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 C par le disque, afficher les processus en cours d'exécution et afficher tous les fichiers actuellement partagés sur le réseau.

# Vérifiez l'espace disque dur

echo "C: Utilisation du lecteur:" & gt;C: \ SendEmail \ info.txt

Récupère-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Sélectionnez la taille de l'objet, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt

# Liste des processus en cours d'exécution

echo "Exécution des processus:" & gt; & gt;C: \ SendEmail \ info.txt

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

# Liste les fichiers / dossiers en cours de partage

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

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

# Envoyer l'email

type C: \ SendEmail \ info.txt |C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nom_utilisateur -xp mot de passe -u "Info serveur journalière"

# Supprime le fichier que nous avons créé

rm C: \ SendEmail \ info.txt

Dans ce script, diverses informations sont envoyées à C: \ SendEmail \ info.txt, puis le texte de ce document nous est envoyé par e-mail avant d'être supprimé.Enregistrez votre script avec une extension de fichier ps1( fichier PowerShell).

Une fois votre script terminé, lancez un test rapide à partir d'une invite Exécuter pour vous assurer qu'il fonctionne correctement.

Utilisez simplement la commande powershell avec un argument -file 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. Dans le cas contraire, recherchez des erreurs de syntaxe dans votre script. Voici à quoi ressemble l'email généré depuis notre exemple de script:

Vous pouvez jouer avec le formatage( par exemple en renvoyant des lignes vides entre les textes) pour le rendre plus agréable sur votre appareil, ou mieux vous pouvez utiliser un programme tiersafficher 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 dans votre script, vous pouvez utiliser Windows Task Scheduler pour l'automatiser. Ouvrez le planificateur de tâches Windows via le menu Démarrer.

Avec le planificateur de tâches ouvert, sélectionnez Action & gt;Créer une tâche de base.

Nommez cette tâche comme "Script d'email quotidien" et cliquez sur suivant. Sur l'écran suivant, sélectionnez la fréquence avec laquelle vous souhaitez exécuter votre script d'e-mail, probablement tous les jours. Ensuite, choisissez l'heure à laquelle vous souhaitez que le script s'exécute, puis cliquez sur Suivant.

Maintenant, vous devriez être sur la partie "Action" de l'assistant, sélectionnez "Démarrer un programme" et entrez le même texte que nous avons entré dans l'invite Exécuter plus tôt pour tester notre script.

Cliquez sur Suivant, puis sur Oui dans cette fenêtre:

Cliquez sur Terminer dans le dernier menu, et vous avez terminé la planification de vos courriels automatiques.