Batch, commande ping et rapport d'erreur
joe.mojito
-
JPC -
JPC -
Bonjour,
j'ai cherché des infos un peut partout mais je n'y arrive pas.
Mon but est de lancer un batch qui ping des adressses d'ordinateurs portables et qui m'envoit un message netsend des que les ordinateurs sont connectés (avec en plus l'option d'avoir un log (si possible))
j'ai fait ca:
j'ai le message netsend me disant que l'adresse %2 répond meme si elle ne répond pas. (en regardant la fenetre du batch il ping 127.0.0.1 et repasse a 127.0.0.1)
pouvez m'orientez sur l'erreur ?
merci d'avance
j'ai cherché des infos un peut partout mais je n'y arrive pas.
Mon but est de lancer un batch qui ping des adressses d'ordinateurs portables et qui m'envoit un message netsend des que les ordinateurs sont connectés (avec en plus l'option d'avoir un log (si possible))
j'ai fait ca:
@echo off if "%1"=="*ping*" goto ping set marche= echo ne pas fermer la fenetre :loop for %%a in (126.160.254.140 126.163.33.23 126.163.33.24 126.163.33.32 126.163.52.13 126.163.81.25 126.101.12.14 126.101.106.70 126.149.100.172 126.149.120.27 126.102.46.52 126.102.89.5) do call %0 *ping* %%a goto loop :ping echo ping en cours de %2 ping -n 1 %2 | find "TTL=128" if not ERRORLEVEL 1 goto attente echo.|date | find "actu" >> ping.txt echo.|time | find "actu" >> ping.txt echo Et %2 repond >> ping.txt echo %marche% | find "*%2*" if not ERRORLEVEL 1 goto attente net send 126.160.254.140 %2 repond. set marche=%marche% *%2* :attente ping -n 20 127.0.0.1 if errorlevel 1 exit
j'ai le message netsend me disant que l'adresse %2 répond meme si elle ne répond pas. (en regardant la fenetre du batch il ping 127.0.0.1 et repasse a 127.0.0.1)
pouvez m'orientez sur l'erreur ?
merci d'avance
Si tu utilises Windows 2000/2003/XP, tu n'est pas obligé de faire un call de ton propre batch mais tu peux incorporer à ton batch des appel à des procédures comme ci-dessous.
!!! Ton batch , ainsi que tes procédures doivent se terminer par :EOF
Dans l'exemple en-dessous les IP adresses sont celle de mon réseau, et j'ai mis "net send ...." en echo car net send est disablé chez moi.
Encore une petite remarque: si un des PC ne répond plus àprès avoir répondu, ta variable "marche" n'est plus correcte !!!
@echo off
cls
set marche=
echo Log file des ping. > ping.txt
echo ------------------ >> ping.txt
echo Ne pas fermer la fenetre
echo Arret du programe par CTRL-C
:loop
for %%a in (129.159.231.1 129.159.231.10 129.159.231.11 129.159.231.12 129.159.231.13 129.159.231.14 129.159.231.15 129.159.231.16 129.159.231.60 129.159.231.71 129.159.231.81 129.159.231.91 129.159.231.111 ) do call :pinging %%a
goto loop
goto :EOF
:pinging
echo ping en cours de %1
ping -n 1 %1 | find "TTL="
if ERRORLEVEL 1 goto attente
echo %date% %time% %1 repond >> ping.txt
echo %marche% | find "*%1*"
if not ERRORLEVEL 1 goto attente
echo net send 126.160.254.140 %1 repond.
set marche=%marche% *%1*
:attente
echo Attente de 20 secondes
ping -n 20 127.0.0.1 > nul
if errorlevel 1 exit
goto :EOF