elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bashscript sobre hacer ping
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bashscript sobre hacer ping  (Leído 4,102 veces)
socorroz

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Bashscript sobre hacer ping
« en: 6 Diciembre 2023, 17:49 pm »

Hola foreros la cosa es que he hecho un bash script con la intención de que registre la fecha antes y después de un ping y guarde toda la información en un archivo .csv

Lo he hecho y pues no me funciona el menú, a veces imprime si la ip está en línea y a veces no,  estaré usando mal los condicionales?

Les dejo el script para que lo prueben y me retroalimenten con sus opiniones, se les agradece la ayuda!

Código
  1. #/bin/bash
  2. clear
  3.  
  4. echo "***************************************"
  5. echo "1.- Probar Si una ip está en línea o no"
  6. echo "2.- Abrir archivo   CSV                "
  7. echo "3.- Salir                              "
  8. echo "4.- About                              "
  9. echo "***************************************"
  10. read opcion
  11.  
  12. case $opcion in
  13. 1)
  14. echo "escriba una dirección ip: "
  15. read ip_address >> networking.csv
  16.  
  17. date >> networking.csv
  18. ping -c 1 $ip_address  >> networking.csv
  19.  
  20.  
  21. if [ $? -eq 0 ]; then
  22.    echo "La dirección IP $ip_address está en línea"
  23.    echo "La dirección IP $ip_address está en línea" >> networking.csv
  24.    echo "presione intro para continuar"
  25.    read
  26. else
  27.    echo "La dirección IP $ip_address no está en línea"
  28.    echo "La dirección IP $ip_address no está en línea" >> networking.csv
  29.    echo "presione intro para continuar"
  30.    read
  31. fi
  32. date >> networking.csv
  33. sh networking.sh
  34. ;;
  35. 2)
  36. cat networking.csv
  37. echo "presione intro para continuar"
  38. read
  39. sh networking.sh
  40. ;;
  41. 3)
  42. ;;
  43. 4)
  44. echo "Script escrito por socorroz"
  45. echo "GNU LINUX"
  46. echo "2023"
  47. echo
  48. echo "Presione intro para continuar"
  49. read
  50. sh networking.sh
  51. ;;
  52. *)
  53. echo "Opción no válida"
  54. echo "Escoja una opción 1, 2, 3 o 4"
  55. sleep 1
  56. sh networking.sh
  57. ;;
  58. esac
  59.  


« Última modificación: 7 Diciembre 2023, 15:33 pm por fary » En línea

socorroz

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Bashscript sobre hacer ping
« Respuesta #1 en: 9 Diciembre 2023, 20:25 pm »

Bueno ya logré solucionar el problema y les comparto el remedio para  el script.

La cosa es que después de cada opción del CASE IN yo utilicé una llamada al mismo bash o sea sh networking.sh  para que no finalizara el programa y en cambio me devolviera al menú principal así por ejemplo:

Código:
2)
cat networking.csv
echo "presione intro para continuar"
read
sh networking.sh
;;

Resulta y pasa que cuando el "sh networking.sh" se ejecuta el programa principal no ha finalizado y esto provoca que el script entre en un bucle peligroso que consume recursos.

La Solución...

La solución es simple, quitar todos los "sh networking.sh" y ponerlo fuera de la estructura CASE IN.

El nuevo código sería de la siguiente forma:

Código:
#/bin/bash
clear
 
echo "***************************************"
echo "1.- Probar Si una ip está en línea o no"
echo "2.- Abrir archivo   CSV                "
echo "3.- Salir                              "
echo "4.- About                              "
echo "***************************************"
read opcion
 
case $opcion in
1)
echo "escriba una dirección ip: "
read ip_address >> networking.csv
 
date >> networking.csv
ping -c 1 $ip_address  >> networking.csv
 
 
if [ $? -eq 0 ]; then
    echo "La dirección IP $ip_address está en línea"
    echo "La dirección IP $ip_address está en línea" >> networking.csv
    echo "presione intro para continuar"
    read
else
    echo "La dirección IP $ip_address no está en línea"
    echo "La dirección IP $ip_address no está en línea" >> networking.csv
    echo "presione intro para continuar"
    read
fi
date >> networking.csv
;;
2)
cat networking.csv
echo "presione intro para continuar"
read
;;
3)
;;
4)
echo "Script escrito por socorroz"
echo "GNU LINUX"
echo "2023"
echo
echo "Presione intro para continuar"
read
;;
*)
echo "Opción no válida"
echo "Escoja una opción 1, 2, 3 o 4"
sleep 1
;;
esac
 
./networking.sh



« Última modificación: 9 Diciembre 2023, 20:26 pm por socorroz » En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Bashscript sobre hacer ping
« Respuesta #2 en: 9 Diciembre 2023, 21:17 pm »

bn pero no llames a sí mismo, enciérralo en un bucle infinito y con la opción 3 finaliza el programa.

Código
  1. #!/bin/bash
  2. while :
  3. do
  4. # "aqui tu codigo"
  5. # "Presiona [CTRL+C] para salir... o en la opcion 3 exit ();"
  6. sleep 1
  7. done

SaludOS
« Última modificación: 9 Diciembre 2023, 21:27 pm por .xAk. » En línea


socorroz

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Bashscript sobre hacer ping
« Respuesta #3 en: 10 Diciembre 2023, 02:36 am »

Sí esa es otra opción. 🙂
También aprendí que utilizar el intérprete sh en un script bash no es lo mas aconsejable de modo que "sh script.sh" y "./script.sh" no es lo mismo.

« Última modificación: 10 Diciembre 2023, 02:37 am por socorroz » En línea

.xAk.


Desconectado Desconectado

Mensajes: 397


F0r3v3R NeWbI3


Ver Perfil WWW
Re: Bashscript sobre hacer ping
« Respuesta #4 en: 10 Diciembre 2023, 02:55 am »

:-) pues te gustará `./script.sh`

sh es nativo, mejor sh. Confia en sh, disponible en quaquier *nix, y lo que haces con sh funciona en los demás.

y olvida eso de llamar al script. Creas procesos nuevos, uno detrás de otro igualmente. Cada proceso es una nueva sesión de shell.
« Última modificación: 10 Diciembre 2023, 03:21 am por .xAk. » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hacer ping a una maquina
Programación Visual Basic
icisneros 4 4,622 Último mensaje 19 Agosto 2006, 02:45 am
por Castord
Hacer ping o algo asi (en basic6.0)
Programación Visual Basic
cneangel 6 6,780 Último mensaje 3 Abril 2008, 06:41 am
por SKL (orignal)
Como hacer ping a Bitacoras.com ?
PHP
Diabliyo 6 6,849 Último mensaje 14 Marzo 2010, 01:19 am
por Diabliyo
¿Cómo hacer ping a pc?
PHP
1mpuls0 1 3,700 Último mensaje 11 Noviembre 2011, 01:13 am
por Anonymous250
hacer ping desde mi web (como tengo que hacer?)
Desarrollo Web
guglia001 2 2,898 Último mensaje 2 Mayo 2014, 17:18 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines