test connection resau

Le
ben
Ce script devrait permettre, au démarrage d'un ordinateur, qu'une connexion
réseau soit établie, avant d'effectuer d'autres traitements réseau, comme des
mappages, des connexions à des imprimantes, etc.

C'est ce que fait le batch suivant, sur le 192.168.1.1 (supposé être l'IP de
la passerelle).


@echo off
:BOUCLE
setlocal
for /F "usebackq" %%i in (`ping -n 1 192.168.1.1 ^| find /C /I
"impossible"`) do (set NBERR=%%i)
echo Ping fait ; Nb acces incorrects : %NBERR%
if /I %NBERR% GTR 0 goto :BOUCLE

echo Connexion OK
::
:: suite des traitements réseau
::

endlocal
exit

J'ai désactivé le réseau, la connection est toujours ok ?.
Apparemment le ping ne se fait pas.

Quelqu'un a idée de l'erreur ?.

Merci.

Cordialement.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MCI (ex do ré Mi chel la si do) [MVP]
Le #16705991
Bonjour !


Tu testes le mot "impossible".
Mais, que se passe-t'il, s'il n'apparaît pas ; par exemple, si tu
obtiens :
"Délai d'attente de la demande dépassé"
?

Dans ce cas, tu ne détecteras pas l'erreur.

AMHA, tu devrais inverser, et tester une bonne réponse du ping, pour
sortir de la boucle.


@-salutations

Michel Claveau
MCI (ex do ré Mi chel la si do) [MVP]
Le #16705981
Re !

Tu peux aussi, à la place du délai dépassé, obtenir : "Défaillance
générale"
Ou d'autres messages.

re @ salutations
--
Michel Claveau
Gilles LAURENT [MVP]
Le #16706411
"ben" wrote:

Bonjour,

Ce script devrait permettre, au démarrage d'un ordinateur, qu'une connexion
réseau soit établie, avant d'effectuer d'autres traitements réseau, comme des
mappages, des connexions à des imprimantes, etc.



En complément de la réponse de Michel, si votre plateforme est Windows XP ou
supérieur alors une méthode robuste et non localisée consiste à utiliser la
classe WMI Win32_PingStatus. Cette classe possède la propriété StatusCode qui
vous indiquera le résultat de l'opération. C'est ici :

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
ben
Le #16706551
A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais
Correspond au message du ping infructueux.

Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?.
Le endlocal est-il obligatoire ?

@ECHO Off
setlocal
Echo SecondBoot
c:tempsleep 60

:BOUCLE
setlocal
for /F "usebackq" %%i in (`ping -n 1 10.0.0.2 ^| find /C /I
"timed out"`) do (set NBERR=%%i)
echo Ping fait ; Nb acces incorrects : %NBERR%
if /I %NBERR% GTR 0 goto :BOUCLE
echo Connexion OK

c:tempnetdom join %ComputerName% /domain:LTECG-PEDA
/userd:LTECG-PEDAimage /passwordd:cl3li2ph1_IMAGE
regedit /s C:TEMPcount.reg
c:tempshutgui /l /y /t:10 /r
if exist c:temp*.exe del c:temp*.exe /f /q>nul
if exist c:temp*.reg del c:temp*.reg /f /q>nul
if exist c:temp*.txt del c:temp*.txt /f /q>nul
if exist c:tempfirstboot.cmd del c:tempfirstboot.cmd /f /q>nul
del c:tempSecondboot.cmd
endlocal
exit
********************

Merci.
Cordialement.
Gilles LAURENT [MVP]
Le #16707081
"ben" wrote:

A place du mot IMPOSSIBLE il faut mettre TIMED OUT acr mon OS est en anglais
Correspond au message du ping infructueux.



C'est pour, entre autre, éviter ce genre de problème que je vous invite à
utiliser la classe WMI Win32_PingStatus. Comme cela vous êtes d'une part
indépendant de la locale et également de la réponse de la commande ping comme
l'indique Michel.

Aussi n'y a-t-il pas un setlocal ou endlocal superflu ?.
Le endlocal est-il obligatoire ?



Oui, le setlocal à l'intérieur de la boucle est en trop. Si la boucle se
répète beaucoup alors vous allez exploser la pile. L'instruction setlocal à
le même comportement que le mnémonique assembleur PUSH. Il permet de
préserver l'environnement sur la pile puis de le restituer via la commande
endlocal (mnémonique assembleur POP).

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
ben
Le #16712971
Bonjour,

Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour
mon cas ?.
Apparement le endlocal selon certain cas n'est obligatoire ?.

Cordailement.
Gilles LAURENT [MVP]
Le #16716641
"ben" wrote:

Bonjour,



Bonjour,

Donc un seul setlocal suffit pour plusieurs variables et traitements ?Pour
mon cas ?.
Apparement le endlocal selon certain cas n'est obligatoire ?.



Pour un setlocal doit être associé un endlocal

Ci-dessous un petit exemple pour bien comprendre le fonctionnement du couple
(setlocal, endlocal). Une première boucle empile l'environnement et la
seconde boucle dépile. La variable d'environnement "test" prendra les valeurs
de 1 à 10 lors de l'empilage (PUSH) puis de 10 à 1 lors du dépilage (POP).

--- Coupez ici : local.cmd ---
@echo off
setlocal enabledelayedexpansion

:: empilage (PUSH)
for /l %%i in (1,1,10) do (
setlocal
set test=%%i
echo !test!
)

:: dépilage (POP)
for /l %%i in (1,1,10) do (
echo !test!
endlocal
)

endlocal
--- Coupez ici : local.cmd ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Publicité
Poster une réponse
Anonyme