martes, 10 de abril de 2007

Lectura de un fichero y algo más....

Bueno, hasta ahora hemos realizado cosas sencillitas ahora vamos a hacer algo un poquito más complejo.

Lo que os propongo es lo siguiente. ¿qué haríais si os encontráseis con que quereis controlar cada X minutos si Y servidores o Routers o Pc's o lo que queráis están activos, o sea con conexión?

Bueno yo os propongo hacerlo con un simple cmd que lea el contenido de un fichero y ejecute o realize algo con dicho contenido.

Bueno, empezaremos con el contenido del fichero.

Inicio -- lista.txt <--- No copiar esta línea copiar a partir de aquí.

192.168.0.1|pc1
192.168.0.2|pc2
192.168.0.254|routeradsl
192.168.0.10|serverweb
192.168.0.3|pc_luisa

Fin lista.txt <--- No copiar esta línea.

Bien en el fichero tenemos las ips y las descripciones de los equipos a los que queremos controlar si están conectados, apagados, o sin red.

Bien en este ejemplo usaré un comando que utilizaré bastante que se llama FOR, como siempre para obtener la ayuda detallada de dicho comando escribiremos FOR /?.

También utilizaremos el comando IF muy útil y poco aprovechado pero bueno poco a poco lo irémos viendo.

Bueno pasemos a la chicha.

DoPing.cmd
---------- Copia a partir de esta línea -----------
if exist resultado.txt del resultado.txt

for /f "tokens=1,2 delims=|" %%p in (lista.txt) do (@ping %%p -n 2 | @find "TTL">nul || @echo %time% -[ %%p ] - [ %%q ] - [ no responde ] >>resultado.txt )

start notepad resultado.txt

--------- FIN DE DoPing.cmd -----------------------

1.- Como podemos ver, lo primero que hacemos es comprobar si existe el fichero resultado.txt y si existe lo eliminamos con el comando DEL.

2.- El comando For es algo más complejo, no quiero entrar demasiado en detalles, en principio lo que hace es definir que hay 2 valores por línea y que están separados por el símbolo "|", %%p es el valor 1 o sea token 1 y le decimos que lo tiene que coger del fichero lista.txt especificado arriba.
3.- Lo siguiente que hace es para cada 1 valor realiza un ping y busca en el resultado del ping el valor TTL.
4.- eL || significa que si el comando previo a fallado osea que el find no ha sido correcto ejecutará el echo y añadirá el parámetro hora (time) %%p = ip(token1) %%q(descripción - token2) y añadirá el resultado al fichero resultado.txt

Y por último lo que hace es que nos muestra el contenido del fichero en el notepad.

Bueno, esté miniscript es útil si deseamos por ejemplo crear una tarea programada cada X minutos y que nos guarde un registro. Para que esto funcione deberíamos quitar la primera y última línea y cada vez que se ejecute el script se irá añadiendo al fichero y luego nosotros con tranquilidad podemos examinarlo.

Bueno hay queda eso, si hay alguna duda u error........

No hay comentarios: