Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: LDueñas en 23 Mayo 2011, 17:20 pm



Título: Problema Script. [bash]
Publicado por: LDueñas en 23 Mayo 2011, 17:20 pm
Hola, soy nuevo en el foro. Me he registrado porque estoy intentando hacer un pequeño y simple script que consta de un menú con 3 apartados, y me está trayendo verdaderos quebraderos de cabeza. En el primero, marcando el usuario la opción 1 el equipo se debe reiniciar. Hasta ahí todo bien pero he de ponerle un mensaje de confirmación (si escribe si, se reinicia, sino vuelve al principio) que aunque se que es super sencillo no logro aplicarlo.
Con el segundo más de lo mismo, ya que se trata de reiniciar otro sistema.
Y el tercero se trata de una prueba de conectividad, pretendo hacer un submenú dentro de este apartado en el que el usuario pueda hacer ping a su propia máquina o bien a otro pc conectado a la red local, así como una opción para probar conectividad en todos los pc's de la red.
Esto es lo que he hecho:
#!bin/bash
echo "menú"
echo "1. Reiniciar pc"
echo "2. Reiniciar server"
echo "3.Prueba de conectividad"
echo "elige tu opcion"
read entrada1
case $entrada1 in
1)
aquí simplemente teníka escrito reboot, pero al necesitar incluir una orden de confirmación me pierdo totalmente.
;;
2)
igual que 1
3) echo "¿a donde"?
echo 1. "ping localhost"
echo 2. "ping server"
echo 3. "ping rangos"

Y aquí tmp se seguir..
Como veis soy muy novato en esto y mis conocimientos no van más allá de crear un simple menú. He probado para los casos 1 y 2 el utilizar if y while pero sin resultado. Ojalá podais echarme un pequeño cable. Gracias de antemano y espero haber puesto la duda en el lugar correcto del foro.
Un saludo.


Título: Re: Problema Script.
Publicado por: LDueñas en 24 Mayo 2011, 12:13 pm
He resuelto varias cosas, ahora mismo el script estaría así.,
#!bin/bash
echo "1.reinicio pc"
echo "2. reinicio asterisk"
echo "3. prueba conectividad"
echo "elige tu opcion"
read opcion
case $opcion in
1)
while true; do
echo
read -p "estás seguro de reiniciar?" S o N" j
case $j in
s ) reboot;;
n ) exit;;
* ) echo "introduce S o N;;
esac
done
;;
2) while true; do
echo
read -p "estás seguro de reiniciar?" S o N" j
case $j in
s )reboot 192.168.x.x;;
n )exit;;
* )echo "introduce S o N";;
esac
done
;;
3) echo "¿A donde?
echo 1."ping localhost"
echo 2."ping asterisk"
echo 3. "comprobar red local"
read valor
case $valor in
1) ping localhost;;
2 ping 192.168.x.x;;
3)nmap -sP 192.168.2.1-254
esac
done
esac
El caso es que me da error en lineas 33 y 45 y por más que pruebo no doy con ello.


Título: Re: Problema Script.
Publicado por: leogtz en 24 Mayo 2011, 23:55 pm
Mal, mal, todo mal, vuelve a hacerlo de nuevo, borra todo y comienzalo.

Código
  1. #!/bin/bash
  2. # Menu de opciones con select
  3. OPCIONES="Hola Salir Lala"
  4. select opt in $OPCIONES; do
  5. if [ "$opt" = "Salir" ]; then
  6. echo done
  7. exit
  8. elif [ "$opt" = "Hola" ]; then
  9. echo Hola Mundo
  10. else
  11. clear
  12. echo opción errónea
  13. fi
  14. done
  15.  


Título: Re: Problema Script. [bash]
Publicado por: LDueñas en 25 Mayo 2011, 12:40 pm
Me has ayudado mucho te lo agradezco. Solo una última cosa, ¿cómo haría para meter una confirmación si el usuario escribiera p ej. "salir"?


Título: Re: Problema Script. [bash]
Publicado por: leogtz en 25 Mayo 2011, 23:03 pm
¿Qué código estás usando? porque en el que dejé anteriormente ya lleva la implementación para salir.


Título: Re: Problema Script. [bash]
Publicado por: LDueñas en 26 Mayo 2011, 09:42 am
Borré todo mi código y me he guiado del tuyo para la realización del menú. En lugar de su creación con echo he descubierto  que con select es más cómodo gracias a ti.

Como bien has dicho; has añadido una implementación para salir en el menú, pero mi idea era que, entrando en un menú (p. ej 1-reiniciar ordenador) el usuario al pulsar el 1 recibiera un mensaje de confirmación en el que se le preguntara si está seguro de la acción a realizar. En el caso de ser afirmativa su respuesta, se reiniciara el equipo y, si por el contrario decidiese que no era buena idea pulsando "no" volviera para atrás: de nuevo al menú.

Quizás todo esto ya está resuelto con tu código  y no me he percatado ya que estoy empezando en esto y la verdad que ando perdido. Por las pruebas quehe realizado, el menú si que se crea correctamente y me funciona, pero el tema de la confirmación (que ya tenía resuelto en mi anterior código con los comando while, read y case) no sé como implementarla en este.
Saludos y perdona las molestias.


Título: Re: Problema Script. [bash]
Publicado por: leogtz en 26 Mayo 2011, 22:00 pm
Código
  1. #!/bin/bash
  2.  
  3. function menu()
  4. {
  5. clear;
  6.  
  7. select opcion in "Reiniciar" "Reiniciar 2"
  8. do
  9. # Chequeo del a opcion 1
  10. if [ "$opcion" = "Reiniciar" ]
  11. then
  12.  
  13. read -p "Está seguro de reiniciar? s/n : " confirmacion
  14.  
  15. if [ "$confirmacion" = "s" ]
  16. then
  17. echo -e "Reiniciando..."; # No necesario.
  18. read; # No necesario
  19. # Comando para reiniciar...
  20. else
  21. menu;
  22. fi
  23.  
  24. fi
  25.  
  26. # Chequeo de la opcion 2
  27. if [ "$opcion" = "Reiniciar 2" ]
  28. then
  29.  
  30. read -p "Está seguro de reiniciar? s/n : " confirmacion
  31.  
  32. if [ "$confirmacion" = "s" ]
  33. then
  34. echo -e "Reiniciando..."; # No necesario
  35. read; # No necesario, solo para pausar
  36. # Comando para reiniciar...
  37. else
  38. menu;
  39. fi
  40.  
  41. else
  42. menu;
  43. fi
  44. done
  45.  
  46. }
  47.  
  48. menu;
  49.  


Título: Re: Problema Script. [bash]
Publicado por: LDueñas en 27 Mayo 2011, 09:16 am
Te agradezco la ayuda :)