Foros del Web » Administración de Sistemas » Unix / Linux »

Ayuda con Script

Estas en el tema de Ayuda con Script en el foro de Unix / Linux en Foros del Web. Hola: Tengo hecho un script en shell que es el siguiente <code> #!/bin/bash echo "" echo " 1 -> Windows XP" echo " 2 -> ...
  #1 (permalink)  
Antiguo 15/03/2011, 10:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Ayuda con Script

Hola:
Tengo hecho un script en shell que es el siguiente
<code>
#!/bin/bash
echo ""
echo " 1 -> Windows XP"
echo " 2 -> Windows XP Pantalla completa"
echo " 3 -> Salir"
echo ""
echo "Seleccione uno de los Sistemas Operativos "
read so
if [ "$so" = "1" ]; then
VBoxManage startvm WinXP
elif [ "$so" = "2" ]; then
VBoxManage startvm Ubuntu
elif [ "$so" = "3" ]; then
exit
fi
#FIN
</code>
Como veis lo que hace es preguntarme que máquina virtual quiero arrancar.
Quiero hacer uno que me busque en un carpeta las máquinas virtuales que hay y que me permita arrancar la que yo quiera.
Este es un poco limitado y como estoy cambiando continuamente de máquinas, tendría que modificar tamkbién el script.
¿Alguna solución?
Gracias
Un saludo
Código HTML:
Ver original
  1. [HIGHLIGHT="ASP"][HIGHLIGHT="HTML"]
[/HIGHLIGHT][/HIGHLIGHT]
  #2 (permalink)  
Antiguo 15/03/2011, 18:09
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

... en una instalación normal las máquinas virtuales se colocan en ~./VirtualBox/Machines/ ... Un select deberá facilitarte mucho la vida.
__________________
I ♥ The Music!

Última edición por maturano; 15/03/2011 a las 18:25
  #3 (permalink)  
Antiguo 15/03/2011, 22:23
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con Script

Las últimas versiones de VirtualBox colocan un directorio "Virtual Machines" o algo así en la carpeta del usuario, ya no está bajo .VirtualBox.

Recomendaría el uso de enlaces simbólicos cuyos nombres no cambien apuntando a las máquinas virtuales, o el leer los directorios dentro de .VirtualBox/Machines y generar una lista a partir de eso (busca sobre find -type d).

Saludos.
  #4 (permalink)  
Antiguo 16/03/2011, 02:10
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Hola:
Muchas gracias por las respuestas
Deciros que no tengo mucha idea de programación
Con el comando find, he buscado las máquinas y hasta ahí todo bien.
Lo que quiero que el script me haga es que me busque las máquinas dentro de un directorio (que ya lo he conseguido) y que una vez buscadas, me haga una lista y me deje elegir cual quiero arrancar (que es lo que no he conseguido)

Un saludo
  #5 (permalink)  
Antiguo 16/03/2011, 07:31
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con Script

Tenés dos opciones, a mi entender.
1- Listás las máquinas encontradas, y leés la entrada del usuario con el comando read:
read eleccion_usuario
2- Hacer que una llamada al script sin parámetros liste las máquinas, y una llamada con un parámetro ejecute la elegida (es decir, "script 1" ejecuta la máquina 1). Para eso recordá que el primer parámetro dado en la línea de comandos se guarda en $1

Luego de tener el número elegido por el usuario, simplemente hacés un case.

Ahora, la parte complicada ¿cómo elegís la máquina teniendo el número?
Una forma posible y sencilla es usando cut y find:

Código Bash:
Ver original
  1. find . -type d -printf "%f " | cut -d " " -f $eleccion_usuario

Jugá con eso


Saludos.
  #6 (permalink)  
Antiguo 16/03/2011, 13:25
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

Cita:
Iniciado por AlvaroG Ver Mensaje
Las últimas versiones de VirtualBox colocan un directorio "Virtual Machines" o algo así en la carpeta del usuario, ya no está bajo .VirtualBox.

[...] o el leer los directorios dentro de .VirtualBox/Machines y generar una lista a partir de eso [...]
Me perdí ¿Está o no dentro de .VirtualBox?


Del script, lo dije y repito:
Cita:
Iniciado por maturano Ver Mensaje
Un select deberá facilitarte mucho la vida.
Código BASH:
Ver original
  1. #!/bin/bash
  2.  
  3. PS3='Seleccione la máquina virtual: '
  4. select maquina in `ls ~/.VirtualBox/Machines`
  5. do
  6.     echo "Se ha seleccionado la máquina '${maquina}'"
  7.     # Y entonces, tienes $maquina para ser utilizado en tu código
  8.  
  9.     break
  10. done
__________________
I ♥ The Music!
  #7 (permalink)  
Antiguo 16/03/2011, 13:37
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con Script

No conocía select, muy buena opción

Las máquinas virtuales estarán dentro de .VirtualBox dependiendo de la versión, asumí que se entendería que la segunda vez me refería a "la carpeta en la que estén las máquinas virtuales"


Saludos.
  #8 (permalink)  
Antiguo 16/03/2011, 14:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

hola:
Gracias por las respuestas.
Las máquinas pueden estar dentro de .virtualbox o no. Según se configure. Pero eso no me preocupa, si hay que ponerlas dentro no pasa nada.
Un saludo
  #9 (permalink)  
Antiguo 16/03/2011, 14:43
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

Siempre puedes manejar la ruta como una variable; no hay necesidad de mover nada.

Quizá puedes colocar acá tu script por si alguien más está interesado y/o pudiera ver más aportes.

Un saludo
__________________
I ♥ The Music!
  #10 (permalink)  
Antiguo 16/03/2011, 14:56
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Hola:
He probado el código de maturano.
Me lista bien las máquinas, pero a la hora de elegir una (he probado con el número que me sale y con el nombre) me echa del script.
Un saludo
  #11 (permalink)  
Antiguo 16/03/2011, 15:20
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

ejém ... ¿y cuál es tu código?.

Lo que yo dejé es solo una muestra de cómo puedes asignar el nombre de un directorio a una variable, que será el nombre de tu máquina virtual que querrás manipular. Como dejo como comentario, tú deberás utilizar esa variable y arrancar la máquina (tu código).

... que viendo ahora de qué trata tu código, es super simple.
__________________
I ♥ The Music!
  #12 (permalink)  
Antiguo 16/03/2011, 15:44
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Hola:
Me he explicado mal. Nome hecha del script, lo que me pasa es que no me funciona.
He visto que el problema está, en que el comando VBoxManage startvm solamente admite el nombre de la máquina sin extensión (.vdi).
Por favor ¿Podéis decirme como listar las máquinas sin extensión?
He leido por ahí el comando substr pero no se si funcionará
Gracias
  #13 (permalink)  
Antiguo 16/03/2011, 16:23
 
Fecha de Ingreso: mayo-2010
Ubicación: 0101010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con Script

-- Favor de borrar --
  #14 (permalink)  
Antiguo 16/03/2011, 16:28
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

... Tengo VirtualBox instalado en un servidor (no sé que versión ) y en el directorio que muestro tiene a su ves directorios con nombres de las máquinas virtuales por lo que al hacer el ls solo obtengo los nombres. Los archivos .vdi deben ser los discos duros de las máquinas, que en mi caso están en otro directorio independiente (HardDisks).

Como sea, igual deberías tener un directorio que solo tiene otros directorios, uno por máquina y con el nombre de la máquina... lista ese, así de simple. Quizá deberás compartir aquí como es la estructura de tus directorios.

En todo caso, si lo que tienes es el nombre de un archivo con extensión, podrás separar solo el nombre de la siguiente manera:
Código BASH:
Ver original
  1. #!/bin/bash
  2.  
  3. maquina='maquina.vdi'
  4.  
  5. echo ${maquina%.*}    # Salida: maquina


Edito/Añado:
Ir por discos duros (archivos .vdi) puede funcionarte, pero en general no es lo correcto. Un disco duro puede tener más de una máquina virutal (doble booteo) o una misma máquina virtual podría tener más de un DD.
__________________
I ♥ The Music!
  #15 (permalink)  
Antiguo 16/03/2011, 16:35
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Muchísimas gracias.
Por fin todo funcionando perfectamente
Un saludo
  #16 (permalink)  
Antiguo 16/03/2011, 18:22
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

Cita:
Iniciado por maturano Ver Mensaje
Quizá puedes colocar acá tu script por si alguien más está interesado y/o pudiera ver más aportes.
__________________
I ♥ The Music!
  #17 (permalink)  
Antiguo 17/03/2011, 02:12
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Claro:

Código:
#!/bin/bash
PS3='Seleccione la máquina virtual: '
maquina='maquina.vdi'
select maquina in `ls /media/Datos/MaquinasVirtuales/`
 do
    echo "Se ha seleccionado la máquina '${maquina%.*}'"
    VBoxSDL -fullscreen -vm ${maquina%.*}
 break
done
Un saludo y muchas gracias por todo
  #18 (permalink)  
Antiguo 17/03/2011, 06:48
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Hola de nuevo:
Ya para rematar la faena lo único que me queda es lo siguiente:
Quiero que nada mas iniciar ubuntu se arranque el script y salga la pantalla para elegir la máquina que quiera arrancar.
He intentado de las siguientes maneras, pero no me funciona:
En sistemas->preferencias-> aplicaciones al inicio
Poniéndolo en /etc/init.d
¿Sabèis alguna otra manera de hacerlo?
Gracias
  #19 (permalink)  
Antiguo 17/03/2011, 19:04
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: Ayuda con Script

1. Ahora que caigo en cuenta, VBox tiene su comando para listar las máquinas virtuales (VBoxManage list vms), ¿no sería mejor utilizar eso en lugar de listar un directorio?. Hay que parsear la salida, pero que eso de ir por discos duros no deja de no convencerme ...

Código BASH:
Ver original
  1. #!/bin/bash
  2.  
  3. select maquina in `VBoxManage list vms | grep "{" | awk '{print $1}' | sed 's/\"//g'`
  4. do
  5.     echo $maquina
  6.     break
  7. done

Creo así está "más a prueba de fallos".


2. ¿Qué tienes en mente?. ¿Estás usando un Ubuntu con interfaz gráfica? (¿para qué?), ¿el usuario se logueará automáticamente?, ¿es esto para un usuario en particular?.

En general, prueba colocarlo en ~/.profile si es para un usuario. Si tiene interfaz gráfica deberás lanzarlo mediante un xterm (o la terminal de Gnome, que no sé cual sea el comando).

Quizá esto último sea merecedor de un tema aparte. Saludos
__________________
I ♥ The Music!
  #20 (permalink)  
Antiguo 18/03/2011, 02:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 137
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: Ayuda con Script

Hola:
Gracias por la respuesta.
Lo quiero para una sala de ordenadores que tiene instalado ubuntu 10.10 con entorno gráfico.
Solamente hay un usuario que se inicia automáticamente al arrancar el equipo.
Lo que quiero es que cuando se inicie la sesión, automáticamente se ejecute el script para arrancar la máquina que le digamos.

Etiquetas: sistemas-unix, virtualbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:19.