| 
	
		|  Autor | Tema: Problema Script. [bash]  (Leído 6,758 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 selectOPCIONES="Hola Salir Lala"select opt in $OPCIONES; doif [ "$opt" = "Salir" ]; thenecho doneexitelif [ "$opt" = "Hola" ]; thenecho Hola Mundoelseclearecho opción erróneafidone 
 |  
						| 
								|  |  
								|  |  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 | 17,281 |  4 Noviembre 2010, 15:58 pm por moikano→@
 |  
						|   |   | Problema script bash ruta de directorio en variable Scripting
 | InuKen | 4 | 7,527 |  14 Mayo 2011, 00:46 am por leogtz
 |  
						|   |   | Problema script bash Scripting
 | hervasiop12345 | 2 | 3,698 |  29 Mayo 2011, 22:23 pm por hervasiop12345
 |  
						|   |   | Problema con script en bash Scripting
 | bewa | 0 | 1,761 |  1 Febrero 2012, 21:44 pm por bewa
 |  
						|   |   | Problema con script en bash
							« 1 2 » Scripting
 | Gambinoh | 10 | 8,369 |  21 Diciembre 2014, 14:56 pm por Gambinoh
 |    |