[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Usar virtualbox en servidor sin entorno gráfico.



Hola,

Tambien para hacer un apagado limpio puedes ejecutar este comando, lo unico despues tienes es esperar que la maquina virtual termine de cerrar bien

VBoxManage -nologo controlvm NOMBRE_MAQUINA acpipowerbutton

Te dejo este script, que te puede servir de ejemplo , las maquinas las tenia creadas con el usuario virtualbox (lo cree para correr todo lo que sea virtualbox)

/etc/init.d/virtualbox-manejador.sh
====================================================================================================
#! /bin/sh

### BEGIN INIT INFO
# Provides:          virtualbox-manejador
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Virtualbox Manejador
# Description:       Script que arranca las maquinas virtuales de virtualbox
### END INIT INFO

# Author: Ricardo Marcelo Alvarez <rmalvarez@gnupanel.org>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Arrancando maquinas virtuales VIRTUALBOX"
NAME=virtualbox-manejador.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/virtualbox-manejador.sh

. /lib/init/vars.sh

. /lib/lsb/init-functions

. /etc/default/virtualbox-manejador

MAQUINAS=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo list vms" | /usr/bin/mawk '{print $1;}' | /usr/bin/sort -r `

do_start()
{
    ##subir_redes
    for maquina in ${MAQUINAS}
    do
	ARRANCAR=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo list runningvms" | /usr/bin/mawk '{print $1;}' | /bin/grep ${maquina} | /usr/bin/wc -l `
	if [ ${ARRANCAR} -eq 0 ]
	then
	
	    NOMBRE=${maquina}
	    /bin/echo "Arrancando maquina virtual: ${NOMBRE} "
	    /bin/su ${USUARIO} -c "/usr/bin/VBoxHeadless --vrdp off --startvm ${maquina} & " 1>/dev/null
	    /bin/echo Listo
	    /bin/sleep 4
	else
	    /bin/echo "${maquina} ya se encontraba funcionando"
	fi
	echo ""
	/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo controlvm ${maquina} setlinkstate1 on "
	/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo controlvm ${maquina} setlinkstate2 on "
    done
    /bin/sleep 5
    /bin/echo "1" > /var/run/checkea_virtualbox
}

parar_maquinas()
{
    PARAR=0
    for maquina in ${MAQUINAS}
    do
	PARAR=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo list runningvms " | /bin/grep ${maquina} | /usr/bin/wc -l `
	if [ ${PARAR} -eq 1 ]
	then
	    /bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo controlvm ${maquina} acpipowerbutton"
	fi
    done
}

parar_maquinas_prepo()
{
    PARAR=0
    for maquina in ${MAQUINAS}
    do
	PARAR=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo list runningvms " | /bin/grep ${maquina} | /usr/bin/wc -l `
	if [ ${PARAR} -eq 1 ]
	then
	    /bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo controlvm ${maquina} poweroff "
	fi
    done
}

subir_redes()
{
    PARAR=0
    for maquina in ${MAQUINAS}
    do
	    PLACA_RED=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage showvminfo ${maquina} -details" | /bin/grep "NIC 1" | /usr/bin/mawk -F "\'" '{print $2;}'`
	    /usr/bin/VBoxAddIF ${PLACA_RED} ${USUARIO} ${PUENTE} 1>/dev/null 2>/dev/null
	    /usr/bin/VBoxTunctl -u ${USUARIO} -g ${GRUPO} -t ${PLACA_RED} 1>/dev/null 2>/dev/null
	    #/sbin/ifconfig ${PLACA_RED} down
	    #CAMBIO=${PLACA_RED}"_mac"
	    #MAC_CAMBIO=${!CAMBIO}
	    #/usr/bin/macchanger -m ${MAC_CAMBIO} ${PLACA_RED} 1>/dev/null 2>/dev/null
	    #/sbin/ifconfig ${PLACA_RED} up arp
	    #/usr/sbin/brctl addif ${PUENTE} ${PLACA_RED}
	    #/bin/echo "0" > /proc/sys/net/ipv4/ip_forward
	    #/bin/echo "0" > /proc/sys/net/ipv4/conf/${PLACA_RED}/proxy_arp
    done
}

bajar_redes()
{
    PARAR=0
    for maquina in ${MAQUINAS}
    do
	    PLACA_RED=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage showvminfo ${maquina} -details" | /bin/grep "NIC 1" | /usr/bin/mawk -F "\'" '{print $2;}'`
	    /usr/bin/VBoxTunctl -d ${PLACA_RED} 1>/dev/null 2>/dev/null
	    /usr/bin/VBoxDeleteIF ${PLACA_RED} 1>/dev/null 2>/dev/null
    done
}

#
# Function that stops the daemon/service
#
do_stop()
{
    /bin/echo "0" > /var/run/checkea_virtualbox
    /bin/echo -n "Deteniendo las siguientes maquinas virtuales VIRTUALBOX: "

    for maquinal in ${MAQUINAS}
    do
	NOMBRE=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo showvminfo ${maquinal} | /bin/grep Name: " | /usr/bin/mawk '{print $2;}' `
	echo -n "${NOMBRE} "
    done

    parar_maquinas
    CANTIDAD=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo list runningvms | /usr/bin/wc -l " `
    CONTADOR=0
    CONTADOR_PREPO=0

    while [ ${CANTIDAD} -ne 0 ]
    do
	/bin/echo -n "."

	CANTIDAD=`/bin/su ${USUARIO} -c "/usr/bin/VBoxManage -nologo list runningvms | /usr/bin/wc -l " `
	/bin/sleep 1

	if [ ${CONTADOR} -eq 60 ]
	then
	    CONTADOR=0
	    parar_maquinas
	    /bin/sleep 1
	fi

	CONTADOR=$[ ${CONTADOR} + 1 ]
	
	if [ ${CONTADOR_PREPO} -eq ${MAX_STOP_TIME} ]
	then
	    CONTADOR_PREPO=0
	    echo ""
	    echo "El tiempo de espera a superado los ${MAX_STOP_TIME} segundos, se forzara el apagado de las maquinas que permanezcan encendidas"
	    parar_maquinas_prepo
	    CANTIDAD=0
	    /bin/sleep 21
	fi
	
	CONTADOR_PREPO=$[ ${CONTADOR_PREPO} + 1 ]
    done
    /bin/echo "."
    ##bajar_redes
    /bin/echo "Listo"
    /bin/sleep 2
    /bin/echo ""
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_restart() {
    do_stop
    /bin/sleep 2
    do_start
}

case "$1" in
  start)
	if [ ${ACTIVADO} = "yes" ]
	then
	    /etc/init.d/vboxdrv start
	    /bin/sleep 21
	    do_start
	    /usr/local/bin/montar-gnupanel start
	else
	    /bin/echo "Maquinas virtuales estan desabilitadas."
	    /bin/sleep 4
	fi
	;;
  stop)
	if [ ${ACTIVADO} = "yes" ]
	then
	    /usr/local/bin/montar-gnupanel stop
	    do_stop
	else
	    /bin/echo "Maquinas virtuales estan desabilitadas."
	    /bin/sleep 4
	fi
	;;
  restart)
	if [ ${ACTIVADO} = "yes" ]
	then
	    /bin/sleep 21
	    /etc/init.d/vboxdrv start
	    do_restart
	fi
	;;
  reload)
	if [ ${ACTIVADO} = "yes" ]
	then
	    do_restart
	fi
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
	exit 3
	;;
esac


====================================================================================================


/etc/default/virtualbox-manejador
====================================================================================================

ACTIVADO=no
MONTAR=yes

MAX_STOP_TIME=150

USUARIO=virtualbox

GRUPO=virtualbox

PUENTE=vboxbr0

vbox0_mac=00:FF:92:ED:22:D0
vbox1_mac=00:FF:92:ED:22:D1
vbox2_mac=00:FF:92:ED:22:D2
vbox3_mac=00:FF:92:ED:22:D3
vbox4_mac=00:FF:92:ED:22:D4
vbox5_mac=00:FF:92:ED:22:D5
vbox6_mac=00:FF:92:ED:22:D6
vbox7_mac=00:FF:92:ED:22:D7
vbox8_mac=00:FF:92:ED:22:D8
vbox9_mac=00:FF:92:ED:22:D9

====================================================================================================


Saludos.


> El 9 de abril de 2010 11:55, Camaleón <noelamac@gmail.com> escribió:
> 
> > El Fri, 09 Apr 2010 11:24:00 +0200, Pablo Braulio escribió:
> >
> > > Camaleón escribió:
> >
> > >> ¿Y se inicia, realmente?
> > >>
> > >>
> > > Si se inicia. Lo ejecuto en mi equipo fuera del entorno gráfico y luego
> > > en el escritorio lo puedo comprobar con la interfaz de VirtualBox.
> >
> > Se me ocurre una "chapuzilla".
> >
> > Para la VM en remoto, para que no se cierre a lo bruto e intenta
> > iniciarla de nuevo:
> >
> > VBoxManage startvm --type headless ubuntu
> >
> > Y luego, intenta detenerla.
> >
> > VBoxManage controlvm ubuntu poweroff
> >
> > A ver qué nos cuenta...
> >
> > Saludos,
> >
> > --
> > Camaleón
> >
> >
> > --
> > To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
> > with a subject of "unsubscribe". Trouble? Contact
> > listmaster@lists.debian.org
> > Archive: [🔎] pan.2010.04.09.09.55.40@gmail.com">http://lists.debian.org/[🔎] pan.2010.04.09.09.55.40@gmail.com
> >
> >
> No mencionas que VBox tienes instalado, pero hay algunas versiones que
> permiten controlar las VM por VNC/RDP.
> 
> Por otro lado para apagar el servidor, también puedes conectarte a el y
> apagar con poweroff o shutdown.
> 
> Para abrir aplicaciones en modo gráfico de forma remota usando SSH, sin
> iniciar el GDM al arranque y sin desplazarse al servidor físicamente, te
> conectas de la siguiente forma:
> 
> ssh -X -l root <IP de tu máquina>
> 
> a continuación, puedes iniciar cualquier aplicación gráfica, por ejemplo
> escribes:
> 
> synaptic
> 
> y te abre el actualizador/instalador de paquetes.
> 
> Un saludo a todos/as.
> Javier Silva.


-- 
Ricardo Marcelo Alvarez desarrollador de GNUPanel
Panel de control de hosting GPL para debian
GPL hosting control panel for Debian
http://www.gnupanel.org
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar


Reply to: