ping auto d'une liste de PC (débutant) - Shell/Batch - Programmation
Marsh Posté le 08-09-2004 à 13:02:59
euh tu fais koi la ?
c carément pas terrible ton truc pourquoi tu prends pas tout simplement ton ip, tu la scan, et tu stock si elle a répondu ou pas dans un fichier ...
?? sinon je vois pas ce ke tu veux faire réexplique plz ??
Marsh Posté le 08-09-2004 à 13:12:54
je dois verifier qu'une liste de machines dont je connais les ip répondent bien, et dans le cas ou elles répondent pas, faire quelque chose, comme l'ecrire dans un fichier de log
en gros, mon probleme, c'est le "la machine a répondu ou pas"...
je n'arrive pas a isoler proprement les deux cas, a faire mon test.
Marsh Posté le 08-09-2004 à 13:23:01
je peux te proposer un batch perso ki ping une plage d'ip et affiche le résultat connecté et pas connecté dans un txt
Marsh Posté le 08-09-2004 à 13:38:04
bon en fait il se compose de plusieurs batch qui intéragissent entre eux le premier c scanip.bat:
@echo off
cls
set ip=
set /p ip=quel plage d'ip voulez-vous scanner (3 premiers champs- x.x.x) ?
if not '%ip%'=='' set choice=%ip:~0%
:top
echo 1. scan 1-10
echo 2. scan 1-50
echo 3. scan 1-100
echo 4. scan 1-254
set choice=
set /p choice=quel est votre choix ?
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto suite1
if '%choice%'=='2' goto suite2
if '%choice%'=='3' goto suite3
if '%choice%'=='4' goto suite4
echo Le choix %choice% n'est pas valide.
echo.
goto top
:suite1
set taille=10
goto end
:suite2
set taille=50
goto end
:suite3
set taille=100
goto end
:suite4
set taille=254
goto end
:end
echo resultats:>c:\scanip\scanresults.txt
echo resultats:>c:\scanip\goodresults.txt
echo resultats:>c:\scanip\partages.txt
echo hostname:>c:\scanip\hostname.txt
for /l %%i in (1,1,%taille%) do (
set var=%%i%
start scanengine.bat
ping -n 1 127.0.0.1
)
ping -n 3 127.0.0.1
start pluginmsg.bat
arp -a>c:\scanip\macaddress.txt
exit
Marsh Posté le 08-09-2004 à 13:38:33
le deuxieme c scanengine.bat
@echo off
PING -n 1 %ip%.%var% |FIND "TTL" > NUL
IF NOT ERRORLEVEL 1 GOTO ok
ECHO 10.2.24.%var% disconnect>>c:\scanip\scanresults.txt
goto end
k
ping -n 1 %ip%.%var% |find "TTL=64" > nul
IF NOT ERRORLEVEL 1 GOTO msg1
net view %ip%.%var% |FIND "est vide" > NUL
if not errorlevel 1 goto msg1
ECHO %ip%.%var% Connect avec partages
ECHO %ip%.%var% Connect avec partages>>c:\scanip\scanresults.txt
ECHO %ip%.%var% Connect avec partages>>c:\scanip\goodresults.txt
rem start pluginavert.bat
start pluginscanhostname.bat
goto fin
:msg1
ECHO %ip%.%var% Connect sans partage>>c:\scanip\scanresults.txt
ECHO %ip%.%var% Connect sans partage>>c:\scanip\goodresults.txt
start pluginscanhostname.bat
goto end
:end
exit
:fin
net view %ip%.%var% >>c:\scanip\partages.txt
exit
Marsh Posté le 08-09-2004 à 13:39:08
et éventuellement tu peux rajouter le pluginmsg.bat
@echo off
echo ----------------------------------------
echo ordinateur(s) connecte(s):
type c:\scanip\goodresults.txt
echo retrouvez tous ces resultats dans:
echo c:\scanip\
echo scanresults.txt
echo goodresults.txt
echo partages.txt
echo hostname.txt
echo ----------------------------------------
Marsh Posté le 08-09-2004 à 13:41:08
il faut ke tu crée le rep c:\scanip g oublié de mettre le mkdir
Marsh Posté le 08-09-2004 à 14:04:48
c pour aller le plus vite possible si je tempo de trop c infernal
Marsh Posté le 08-09-2004 à 14:51:24
ok
j'ai trouvé dans ton code ce qui m'interressait pour faire le test.
je te remercie.
Marsh Posté le 24-11-2004 à 10:22:46
DOD_edge a écrit : le deuxieme c scanengine.bat |
Salut DOD_edge,
je voulais savoir ce qu'il y avait dans les fichiers
pluginavert.bat
et
pluginscanhostname.bat
car en lançant la procédure, il m'indique que le 2ème n'existe pas.
Peux-tu les mettre aussi à dispo?
Merci d'avance...
Marsh Posté le 29-11-2004 à 11:17:22
En fait pas grand chose mon scrip me permait d'automatiser un envoi de messages aux users qui ont des partages actifs via le pluginavert.bat et de tenter de résoudre les noms d'hotes via le pluginscanhostname.bat si tu les veux le peux mettre les codes ...
Marsh Posté le 08-09-2004 à 12:45:20
Bonjour,
j'ai une liste de pc dans un fichier, comme ceci:
nom_machine ip_machine
nom_machine1 ip_machine1
...
je veux le lire, pinger la machine, et en fonction du résultat du ping, si on a 100% de perte, faire quelque chose (ecrire un fichier de logs, l'envoyer par mail, lancer le café pour quant j'arriverais dans la salle machines, formatter le disque dur ... )
donc déjà, ce que j'ai fait :
-------------------------
@echo off
rem -je lit le fichier
for /F "tokens=1,2" %%a in (liste_serveurs.txt) do call ING %%a %%b
goto :EOF
ING
@echo Pinging : %1%
ping -w 10 %2 > tmp
rem - pas tres propre comme test
findstr /C:"perte 100" tmp
goto :EOF
-------------------------
le teste du findstr, ça marche, mais c'est sale. Si vous avez des idées là dessus ça m'arrangerais, histoire d'etre plus rigoureux. ou mieux, si je pouvais me passer de passer par un fichier tmp...
le vrai problème maintenant est : comment tester le resultat ?
je voulais mettre ce que me renvoi findstr dans une variable et la tester. si elle est vide alors OK, sinon, KO...
any ideas ?