Hacer un script para hacer ping a una red

Necesito hacer un script que haga ping a una red, y una vez realizado, guarde las direcciones buenas en un archivo y las caídas en otro. Y al final me muestre las direcciones activas. Las diferentes direcciones a las que tenemos que hacer ping, las tengo que hacer con un FOR /L para que nos cuente todas las direcciones.
Yo he hecho algo así, aunque no acaba de salirme, haber si me puedes ayudar a pulirlo, gracias.
@echo on
FOR /L %%A IN (1,1,255) do call ping 192.168.1.%%A -n 1 > nul
IF ERRORLEVEL 1 GOTO malas
IF ERRORLEVEL 0 GOTO buenas
:Malas
ECHO %A malas >>mala.txt
:Buenas
ECHO %A buenas >>buena.txt %%A
TYPE buena.txt

1 respuesta

Respuesta
1
Creo que tu error, básicamente, está en que ERRORLEVEL guarda el resultado del último comando y si metes el ping en una call el último comando fue la call y no el ping y siempre te lo da como bueno. Te sugiero algo así:
@echo on
DEL mala.txt
DEL buena.txt
FOR /L %%A IN (1,1,255) do call :probar %%A
GOTO :FIN
:Probar
ping 192.168.1.%1 -n 1 > nul
IF ERRORLEVEL 1 GOTO malas
ECHO %1 buenas >>buena.txt
GOTO :EOF
:malas
ECHO %1 malas >>mala.txt
GOTO :EOF
:FIN
TYPE buena.txt
Supongo que entiendes la transformación de la variable del bucle de %%A a %1, es que al hacer la llamada (call) y pasarle un parámetro el primer parámetro pasado pasa a ser %1.
Si tienes alguna duda no tengas problema en seguir preguntando.
Saludos,
GGG
Muchas gracias, bueno el tema es que no entiendo mucho de scripts; acabamos de empezar con ellos, y el profesor nos ha puesto unos ejercicios sin explicar prácticamente nada, y que nos buscásemos la vida.
Bueno pues aquí tengo otro problema, resulta que no me he dado cuenta, y deberían aparecer en los archivos las ips que tienen respuesta y las que no, en vez de contar las activas y y las no activas.
Haber si me puedes orientar que cambiar para poderlo hacer. Me han dicho algo de que había que poner en una if not errorlevel 1 y error level 0 y los nombres de los archivos para que los guardase o algo así, pero no sé como.
Gracias de antemano.
No te entiendo muy bien. Los archivos que se obtienen en el script anterior ya tienen las direcciones IP activas (en el archivo buena.txt) e inactivas (en el mala.txt), lo que pasa es que, siguiendo más o menos tu propio guión, solo se incluye la parte variable de la IP. Si en lugar de
ECHO %1 malas >>mala.txt
pones
ECHO 192.168.1.%1 malas >>mala.txt
tendrás en mala.txt las IP's que no han contestado (y algo similar habría que hacer con el otro ECHO). El ERRORLEVEL ya se está usando para distinguir si la IP está activa (valor 0) de si está inactiva (valor 1) pero basta con preguntar por uno de los valores porque si no es 1 es cero y no hace falta un nuevo "IF".
De todas formas, si estás aprendiendo, además de preguntar debes intentar aportar la solución que a ti te parece correcta para poder trabajar sobre algo.
Saludos,
GGG
Muchas gracias, lo siento, no me había dado cuenta, es que nos han puesto esto de repente y estoy un poco desorientado, me suena un poco a chino.
Bueno para la próxima vez que tenga alguna duda, intentaré tenerme bien estudiado todo antes para poder aportar la solución. Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas