Autor
|
Tema: Problema Script. [bash] (Leído 6,344 veces)
|
LDueñas
Desconectado
Mensajes: 5
|
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.
|
|
« Última modificación: 25 Mayo 2011, 00:35 am por Novlucker »
|
En línea
|
|
|
|
LDueñas
Desconectado
Mensajes: 5
|
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.
|
|
« Última modificación: 24 Mayo 2011, 13:28 pm por LDueñas »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Mal, mal, todo mal, vuelve a hacerlo de nuevo, borra todo y comienzalo. #!/bin/bash # Menu de opciones con select OPCIONES="Hola Salir Lala" select opt in $OPCIONES; do if [ "$opt" = "Salir" ]; then echo done exit elif [ "$opt" = "Hola" ]; then echo Hola Mundo else clear echo opción errónea fi done
|
|
|
En línea
|
|
|
|
LDueñas
Desconectado
Mensajes: 5
|
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"?
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
¿Qué código estás usando? porque en el que dejé anteriormente ya lleva la implementación para salir.
|
|
|
En línea
|
|
|
|
LDueñas
Desconectado
Mensajes: 5
|
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.
|
|
« Última modificación: 26 Mayo 2011, 09:45 am por LDueñas »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
#!/bin/bash function menu() { clear; select opcion in "Reiniciar" "Reiniciar 2" do # Chequeo del a opcion 1 if [ "$opcion" = "Reiniciar" ] then read -p "Está seguro de reiniciar? s/n : " confirmacion if [ "$confirmacion" = "s" ] then echo -e "Reiniciando..."; # No necesario. read; # No necesario # Comando para reiniciar... else menu; fi fi # Chequeo de la opcion 2 if [ "$opcion" = "Reiniciar 2" ] then read -p "Está seguro de reiniciar? s/n : " confirmacion if [ "$confirmacion" = "s" ] then echo -e "Reiniciando..."; # No necesario read; # No necesario, solo para pausar # Comando para reiniciar... else menu; fi else menu; fi done } menu;
|
|
|
En línea
|
|
|
|
LDueñas
Desconectado
Mensajes: 5
|
Te agradezco la ayuda
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Bash script] equivalente de goto en batch para bash (SOLUCIONADO)
Scripting
|
moikano→@
|
4
|
16,537
|
4 Noviembre 2010, 15:58 pm
por moikano→@
|
|
|
Problema script bash ruta de directorio en variable
Scripting
|
InuKen
|
4
|
7,017
|
14 Mayo 2011, 00:46 am
por leogtz
|
|
|
Problema script bash
Scripting
|
hervasiop12345
|
2
|
3,440
|
29 Mayo 2011, 22:23 pm
por hervasiop12345
|
|
|
Problema con script en bash
Scripting
|
bewa
|
0
|
1,563
|
1 Febrero 2012, 21:44 pm
por bewa
|
|
|
Problema con script en bash
« 1 2 »
Scripting
|
Gambinoh
|
10
|
7,183
|
21 Diciembre 2014, 14:56 pm
por Gambinoh
|
|