Quisiera por favor ayuda con un programa en programación bash (.bat), que me haga un ping a una dirección IP y que si a través de ese ping se pudo realizar conexión con dicha IP entonces salga un aviso determinado y si no se logró realizar conexión pues salga otro aviso preguntando que si se quiere intentarlo nuevamente o no
Respuesta de gggirald
1
1
gggirald, Experiencia en manejo de bases de datos Oracle, programación en...
Prueba con esto: ========================================== @ECHO OFF IF "%1" == "" GOTO :ayuda :probar PING %1 -n 1 IF ERRORLEVEL 1 GOTO :mal GOTO :EOF :mal SET /P mas=¨Sigo? IF "%mas%" == "s" GOTO :probar IF "%mas%" == "S" GOTO :probar GOTO :EOF :Ayuda ECHO Hace PING a la IP que se pasa como parámetro ECHO Si no es correcto pregunta si se repite ECHO Formato: %0 dirIP =========================================== Lo salvas con el nombre que quieras (por ejemplo, HAZPING.BAT) y lo invocas pasándole la IP a probar: HAZPING 192.168.1.90 Si tienes algún problema o quieres mejorarlo de alguna manera me lo dices. Saludos, GGG
No he tenido nuevas noticias tuyas. ¿Has probado la solución propuesta? Saludos, GGG
Buen día. Primero que todo te agradezco tu ayuda y segundo lamento no haberte respondido recientemente pero estaba sin pc. Bueno en cuanto a tu respuesta, te aclaro que son nuevo en este tipo de lenguaje así que no esperes mucho de mi. Probé lo que me enviaste lo probé, pero se me cerraba la ventana, entonces agregue un pause para que no se me cerrara la ventana, pero sin embargo no estaba realizando el ping. La verdad no entendí tu código, así que empecé a hacerlo lo más fácil posible pero sin embargo no supe como adaptar la condicional que tu tienes en tu respuesta. Este es mi código que cree, se supone que realiza el ping de la dirección 10.0.0.1 (siempre va a hacer esa): @echo off cls cd.. cd.. cd.. cd.. cd.. cd.. color 0E echo ******************************************************************************* echo * VERIFICACION TAPA ABIERTA DE PUNTOS DE PRESION v1.0 * echo * * echo ******************************************************************************* ping 10.0.0.1 -n 5 prompt $T prompt $D paused
Ignora por favor los prompt pues quería agregarla la fecha que se hizo el ping pero para el proyecto es irrelevante. A ver te doy una idea de más o menos es lo que quiero que haga el código y para que: Resulta que existen unos puntos de presión que a través de el pc se verifica si la tapa de dicho punto se encuentra cerrada si y solo si la conexión con la wifi (10.0.0.1) no se esta realizando. Por el contrario si a la hora de realizar el ping se establece la comunicación pues quiero que salga un aviso al usuario advirtiéndole que la tapa del punto de presión quedo abierta. Esto es más o menos a groso modo lo que quiero. Actualmente los usuarios tienen que hacer el ping manualmente, pero pues yo quería que con solo ejecutar el .bat hiciera el ping y diera las advertencias respectivas (si tapa esta abierta o cerrada). Muchas gracias de antemano por tu tiempo y dedicación, estaré atento a tu respuesta o inquietudes.
Si ejecutas el BAT desde una ventana de comando (Inicio/Ejecutar/cmd) el resultado de la ejecución seguirá en la ventana y podrás revisarlo sin necesidad de añadir un comando de PAUSE. Los comandos CD.. solo sirven para retroceder un paso en el PATH y no creo que aporten nada. Si te he entendido bien esto debería servir: ============================================= @echo off Cls Color 0E echo ******************************************************************************* echo * VERIFICACION TAPA ABIERTA DE PUNTOS DE PRESION v1.0 * echo * * echo ******************************************************************************* for /f %%i in ('date /t') do (set fecha=%%i) for /f %%i in ('time /t') do (set hora=%%i) echo %fecha% %hora% ping 10.0.0.1 -n 5 if errorlevel 1 goto :mal echo ******* ping correcto: LA TAPA ESTA ABIERTA goto :eof :mal echo ******* ping incorrecto: LA TAPA ESTA CERRADA ============================================ Copia el código entre las dos marcas en el bloc de notas, sálvalo con el nombre que te parezca (por ejemplo PBAPING.BAT) y ejecútalo mediante una ventana CMD, escribiendo todo el PATH del archivo (por ejemplo C:\TMP\PBAPING). Debería salirte algo como: ******************************************************************************* * VERIFICACION TAPA ABIERTA DE PUNTOS DE PRESION v1.0 * * * ******************************************************************************* 13/09/2011 16:47 Haciendo ping a 10.0.0.1 con 32 bytes de datos: Tiempo de espera agotado para esta solicitud. Tiempo de espera agotado para esta solicitud. Tiempo de espera agotado para esta solicitud. Tiempo de espera agotado para esta solicitud. Tiempo de espera agotado para esta solicitud. Estadísticas de ping para 10.0.0.1: Paquetes: enviados = 5, recibidos = 0, perdidos = 5 (100% perdidos), ******* ping incorrecto: LA TAPA ESTA CERRADA Las instrucciones FOR sirven para capturar en las variables FECHA y HORA el resultado de los comandos que permiten obtener esos datos. Todo comando ejecutado devuelve un valor de la variable interna ERRORLEVEL. Si la ejecución fue correcta el valor devuelto es cero y si no lo fue un valor mayor que cero (que se puede asignar desde el código del propio comando, pero eso no nos importa ahora). Por tanto la instrucción IF ERRORLEVEL 1 GOTO :MAL hace que se salte a la etiqueta :MAL si el comando anterior (en este caso el PING) falló y que continúe si no falló. Intenta conseguir que funcione este BAT y luego, si quieres, lo complicamos. Saludos, GGG