Ms-Dos - Script para comprobar disponibilidad de equipos

   
Vista:

Script para comprobar disponibilidad de equipos

Publicado por lergolas (2 intervenciones) el 19/06/2017 17:54:49
Buenas tardes a todos.
Aunque este es mi primer post en el foro, llevo mucho tiempo haciendo consultandolo y valiéndome de vuestros valiosos consejos.

Normalmente trabajo con Linux y más o menos me voy apañando con los scripts de este sistema.

En Windows estoy muy pez y me está costando bastante empezar. Al lio.

Intento hacer ping a una lista de ip`s de la red desde un script.
He mirado varios hilos de este foro y no he podido dar con la solución, me falla y no hace ping.

Os paso lo que he probado:

1
2
3
4
5
6
7
FOR /F %%A IN (ips.txt) DO CALL :Comprobar %%A
GOTO:EOF
 
:Comprobar
echo %1
ping -n 2 %1
GOTO:EOF

En el archivo .txt hay una ip por linea.

Al ejecutarlo me dice:
El sistema no encuentra la etiqueta por lotes especificada: Comprobar

¿Podéis ayudarme a realizar el script correctamente? Seguramente sea alguna tontería, pero me está dando dolor de cabeza.

Muchas gracias.

Un saudo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana

Script para comprobar disponibilidad de equipos

Publicado por Antoni Masana (324 intervenciones) el 19/06/2017 18:47:44
Puedes subir el BAT y el fichero de texto para probarlo.

En principio esta correcto. Es más lo he probado y funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
C:\Tmp>
C:\Tmp>Lista
 
----------  192.168.1.1  ----------
 
Haciendo ping a 192.168.1.1 con 32 bytes de datos:
Respuesta desde 192.168.1.1: bytes=32 tiempo<1m TTL=64
Respuesta desde 192.168.1.1: bytes=32 tiempo<1m TTL=64
 
Estadísticas de ping para 192.168.1.1:
    Paquetes: enviados = 2, recibidos = 2, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 0ms, Media = 0ms
 
----------  192.168.1.1  ----------
 
Haciendo ping a 192.168.1.1 con 32 bytes de datos:
Respuesta desde 192.168.1.1: bytes=32 tiempo<1m TTL=64
Respuesta desde 192.168.1.1: bytes=32 tiempo<1m TTL=64
 
Estadísticas de ping para 192.168.1.1:
    Paquetes: enviados = 2, recibidos = 2, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 0ms, Media = 0ms
 
----------  192.168.1.1  ----------
 
Haciendo ping a 192.168.1.1 con 32 bytes de datos:
Respuesta desde 192.168.1.1: bytes=32 tiempo<1m TTL=64
Respuesta desde 192.168.1.1: bytes=32 tiempo=3ms TTL=64
 
Estadísticas de ping para 192.168.1.1:
    Paquetes: enviados = 2, recibidos = 2, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 3ms, Media = 1ms

Pero tienes algo que no ves y te esta causando el problema.

Aparte de un pequeño retoque estético Funciona perfectamente:

1
2
3
4
5
6
7
8
9
@echo off
FOR /F %%A IN (ppp.txt) DO CALL :Comprobar %%A
GOTO:EOF
 
:Comprobar
echo.
echo ----------  %1  ----------
ping -n 2 %1
GOTO:EOF

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Script para comprobar disponibilidad de equipos

Publicado por lergolas (2 intervenciones) el 19/06/2017 21:48:39
Muy buenas!

Gracias a tu respuesta ya he dado con el problema.

Sabiendo que estaba bien hecha la estructura, fui probando otras cosas y el problema estaba en el comando "ping", que no lo reconocía si no lo ponía como ping.exe

¿Tienes alguna idea de porqué en un bat no me funciona solamente "ping" y en la linea de comandos sí?

Vaya tontería y la de vueltas que me ha hecho dar...

Muchísimas gracias por la ayuda!

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Script para comprobar disponibilidad de equipos

Publicado por Antoni Masana (324 intervenciones) el 20/06/2017 10:02:44
El problema radica en como interpreta el MS-DOS los ejecutables, cuando pones ping a secas el procesador de comandos no sabe que es y tiene que repasar una lista:

- Mira si es un comando interno del tipo DIR, DEL, TYPE, etc.

- A continuación buscar en las directorio actual y después en las rutas del PATH si existe algún fichero con las extensiones:
.BAT - .EXE - .COM
Siguiendo un orden que ahora no me se.

Conclusión: Si haces un BAT que se llame PING.BAT que tiene que llamar al PING.EXE a menos que especifiques la extensión puede pasar cualquier cosa menos la deseada.

Para saber que cosas se llaman igual que el comando PING has esto:

1
C:\> DIR PING.* /S /P

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar