jueves, 28 de agosto de 2014

Script Batch - bateria de pines


Buenas a todos

Hoy os voy a traer un pequeño tutorial que a muchos os puede gustar.

Cuantos de vosotros habéis querido hacer una batería de pines en una LAN para realizar algún test de conectividad o algunas pruebas de conectividad para ver si perdemos conectividad con algún equipo de la red, ya sea local o Internet y acabáis aburridos de hacer pines equipo por equipo. Pues nada aquí os traigo un trabajo para vagos vagos :D.


Lo único que tenéis que hacer es incluir este código en un archivo Batch o también llamado archivo de procesamiento por lotes ( fichero " . Bat ") y ejecutarlo cuando necesitéis hacer la prueba o incluirlo en una tarea programada para que se ejecute cada X días a X hora o un día concreto a una hora concreta, ( esto también lo explicare después ).


El código básico es el siguiente:


@echo off
cls
if exist pruebaspines.txt del pruebaspines.txt    -> Comprobación existencia fichero
goto pruebaspines

:pruebaspines
Color 0E
echo *******************************************************************************
echo * VERIFICACION PINES *
echo * *
echo *******************************************************************************
goto 1

:1
for /f %%i in ('date /t') do (set fecha=%%i)
for /f %%i in ('time /t') do (set hora=%%i)
ping 10.10.10.10 -n 1   
if errorlevel 1 goto :mal
echo %fecha%-%hora% **** equipo responde  ****  >> pruebaspines.txt
goto 2
:mal
echo %fecha%-%hora% **** equipo no responde ****  >> pruebaspines.txt
goto 2


:2
echo ********* pruebas terminadas *********  >> pruebaspines.txt
exit


Bueno ahora voy a explicar un poco en que consiste y los pasos que sigue.

Con este script para batch podremos probar si tenemos conectividad con un equipo en cuestión o una dirección concreta guardando un reporte del resultado en un documento llamado "" pruebapines.txt "". El script primeramente comprobara si existe un documento llamado pruebaspines.txt y si existe lo eliminara y luego comenzara con el trabajo que le hemos programado, lanzara un único ping  a una dirección concreta que le indicaremos nosotros , en este caso hemos puesto la 10.10.10.10podéis poner la cantidad de pines que queráis, solo tenéis que cambiar el valor que hay después de " -n ", pero para una prueba de conectividad con un único ping es mas que suficiente ), una vez lanzado el ping si el ping es correcto nos dará una respuesta con  " equipo responde " incluyendo la hora a la que se hizo la prueba, pero si el ping falla nos indicara que el " equipo no responde " y una vez acabadas las pruebas nos dará una respuesta, pruebas terminadas.

Todas las pruebas incluyen una linea para guardar los resultados en un documento llamado pruebaspines.txt, si os preguntáis por que hay que pone " >> "  es muy simple, si queremos que la información se vaya incluyendo en lineas nuevas sobre el mismo documento deberemos de poner " >> " pero si ponemos solo un símbolo " > " las lineas se pisaran una sobre otra, por lo que no tendremos un histórico de los resultados de las pruebas.

Los campos de ...

for /f %%i in ('date /t') do (set fecha=%%i)
for /f %%i in ('time /t') do (set hora=%%i)


son campos que necesitaremos si queremos que la linea echo nos devuelva la fecha y hora de cuando se escribió la linea que le indicamos, por lo tanto si queréis que salga la fecha en la linea , esta linea es necesaria.

--------------------------------------------------------   O   -------------------------------------------------------

Pues esto seria la prueba básica es cierto que podremos complementarlo con mas cosas para hacer un documento mucho mas curioso y profesional.

Por ejemplo si queremos que las pruebas tengan un formato compatible con excel, solo tendremos que modificar los "echo " para que el texto incluya  puntos y comas " ; " para generar separadores o incluso pasar el txt a csv para que no tengamos ni que exportar el fichero simplemente ejecutar el "  CSV " listo, también podréis añadirle una fecha al fichero para que este quede registrado con un histórico, por si queréis tener un registro de las pruebas que habéis hecho y tener un seguimiento.

Bueno pues ahora voy a poneros otro ejemplo en el que voy a incluir todo eso y a demás una breve explicación para generar una tarea programada para nuestro fichero batch



@echo off

cls
D:
cd D:\pruebas

if exist pruebaspines.txt del pruebaspines.txt

goto pruebaspines

:pruebaspines
Color 0E
echo *******************************************************************************
echo * VERIFICACION PINES *
echo * *
echo *******************************************************************************
echo FECHA;ESTADO;EQUIPO;COMENTARIO  >> pruebaspines.txt
goto 1

:1
for /f %%i in ('date /t') do (set fecha=%%i)
for /f %%i in ('time /t') do (set hora=%%i)
ping 10.10.10.10 -n 1
if errorlevel 1 goto :mal
echo %fecha%-%hora%;ping correcto;Servidor;  >>  pruebaspines.txt
goto 2
:mal
echo %fecha%-%hora%;fallo ping;Servidor;Contactar con el responsable  >>  pruebaspines.txt
goto 2

:2
for /f %%i in ('date /t') do (set fecha=%%i)
for /f %%i in ('time /t') do (set hora=%%i)
ping 10.10.10.1 -n 1
if errorlevel 1 goto :mal
echo %fecha%-%hora%;ping correcto;puerta de enlace;  >>  pruebaspines.txt
goto 3
:mal
echo %fecha%-%hora%;fallo respuesta;puerta de enlace;Contactar con el responsable >> pruebaspines.txt
goto 3

:3
copy /Y pruebaspines.txt pruebaspines.csv
REN "pruebaspines.csv" "pruebaspines %Date:/= % %Time::=.%.csv"
echo %fecha%-%hora% **** testeo de conectividad finalizado  ****
exit


Bueno en este ejemplo hemos incluido cosas nuevas y una segunda prueba. Todos los campos en naranja son campos que deberéis de tener en cuenta a la hora de programar vuestro fichero personalizado, nombres de fichero, resultados de las pruebas, nombres de las columnas, direcciones IP , etc.. etc..

Bueno voy al grano, este fichero tiene varias peculiaridades nuevas, la primera que encontramos es que ahora le indicamos el directorio donde se encuentra el script:

D:
cd D:\pruebas


Esto lo hemos hecho por que a la hora de usar el programador de tareas, aun que le indiquemos donde esta el fichero a ejecutar el programador de tareas ejecutara el fichero como si estuviera en el directorio C:\Windows\System y no es lo que queremos. Para ver como programar una tarea podéis ir a este enlace Programador tareas windows.



La segunda linea que tenemos es la que hará de cabecera para que nuestro fichero pueda ser utilizado en Excel.

echo FECHA;ESTADO;EQUIPO;COMENTARIO  >> pruebaspines.txt

Como una de las condiciones de Excel a la hora de importar datos a la hoja de calculo y que quede todo en sus respectivas celdas es la condición de punto y coma " ; " le hemos añadido un separador por punto y coma, es cierto que excel también admite, espacios,puntos,comas o un campo personalizado, pero para hacerlo mas simple añadiremos " ; " que es compatible también con los CSV. Por eso hemos modificado también los resultados echo de nuestras pruebas, (echo %fecha%-%hora%;ping correcto;Servidor;  >>  pruebaspines.txt ).


Bueno ahora nos encontramos con el final de nuestro fichero de pruebas, donde vemos mas lineas que no venían en el primer ejemplo:

copy /Y pruebaspines.txt pruebaspines.csv
REN "pruebaspines.csv" "pruebaspines %Date:/= % %Time::=.%.csv"


En estas dos lineas vemos que realizamos una copia de nuestro fichero TXT a un CSV ( copy /Y pruebaspines.txt pruebaspines.csv ) y a continuación renombra el fichero CSV que hemos creado añadiéndole la fecha y hora actual de la creación de dicho fichero, dejando así el fichero preparado para poder realizar un futuro seguimiento de las pruebas que realizamos.


Bueno espero que os haya gustado este tutorial y espero que os sea de utilidad.







http://3.bp.blogspot.com/-__sEj8AZ_QI/UjYHvbgz_tI/AAAAAAAAAJM/1gUDD79bOOw/s1600/Capturar-6.jpg