Bonjour
je cherche un petit script qui fait régulièrement un ping sur une liste d'adresse ip, si la machine ne répond pas ou si le temps de réponse est trop élevé, le script m'envoie un mail
merci
Bonjour
je cherche un petit script qui fait régulièrement un ping sur une liste d'adresse ip, si la machine ne répond pas ou si le temps de réponse est trop élevé, le script m'envoie un mail
merci
Allez quelques pistes...
1) Faire un fichier texte avec la liste des machines : liste.txt
2) FOR sur liste.txt
3) A l'intérieur de la boucle FOR
ping + gestion de l'errorlevel pour l'envoi de mail
4) Petit freeware (sans install ) pour le mailing en batch : Bmail
j'ai fait se petit script
@echo off
cls
:loop
for /F %%i in (machines.txt) do call :ping %%i
goto loop
goto :eof
:ping
ping -n 1 %1 | find /i "ttl=">NUL
if %errorlevel%==1 echo %1 :probleme& bmail.exe -s smtp.xxx.com -t xxx@xxx.com -f xxx@xxx.com -h -a "test" -b "probleme sur %1"
if %errorlevel%==0 echo %1 :OK
sa a l'air de fonctionner a peu près (je découvre complément le batch)
mais le problème c'est qu'il me spam de mail si une machine ne réponds pas il me renvoi le mail a chaque tour de boucle
comment faire pour éviter ça ?
merci
Tu peux conserver quelque part la liste des machines qui ne répondent pas.
Dans ta boucle, si la machine répond, tu regardes dans la liste et tu supprimes la machine si elle s'y trouve.
Si la machine ne répond pas, tu regardes dans la liste, si elle s'y trouves tu ne fais rien et sinon tu envoie le mail et tu l'ajoutes à la liste.
c'est se que je pensais faire mais j'ai un problème
pour faire ça j'ai besoin de comparer deux ips qui se trouve dans deux fichier différent
for /F %%i in (machines.txt) do call :ping %%i
...
:ping
ping -n 1 %1 | find /i "ttl=">NUL
if %errorlevel%==1
dans mon IF je doit parcourir mon fichier qui contient les ip dont le mail a déjà été envoyé et les comparer avec l'ip dont le traitement est en cour, qui se trouve dans %1
j'ai beau me casser la tête je ne sais pas comment faire ça
si quelqu'un peu m'aider...
merci
Tu peux utiliser la commande find ou findstr et tester le %ERRORLEVEL% en retour.
Tu pourras d'ailleurs aussi utiliser findstr (avec /V ce qui permet de n'afficher que les lignes ne correspondant pas) pour retirer l'ip de ton fichier une fois la machine à nouveau OK.
bonjour
j'ai bien avancé dans mon script et il m'envois un mail quand la machine de répond pas a 2 pings de suite et ne me spam plus
maintenant je voudrais qu'il m'envois un mail quand la latence est supérieur a 100ms
je ne sais pas si c'est possible de le faire en batch...
il fraudais extraire la valeur qui se trouve après le "temps=" lors de l'affichage du résultat de la commande ping
peut être en appelant un vbscript ?
si quelqu'un pouvait me donner une piste ?
merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager