Como posso usar um script para controlar um convidado do VirtualBox?

5

Consulte: Lançar uma aplicação no Windows a partir do Ubuntu área de trabalho

Eu queria saber se o Takkat poderia elaborar a execução real, ou seja, como fazer isso no arquivo de script.

Isso será muito útil. Agradecemos antecipadamente

meu arquivo de script InternetExplorerVM.sh se parece com isso, a execução é

/path/to/InternetExplorerVM.sh "C:\Program Files\Internet Explorer\iexplore.exe"

#!/bin/bash

# start Internet Explorer inside of a Windows7 Ultimate VM
echo "Starting 'Internet Explorer' browser inside Windows7 virtual machine"
echo ""
sleep 1
echo "Please be patient"

VBoxManage startvm b307622e-6b5e-4e47-a427-84760cf2312b

sleep 15

echo ""
echo "Now starting 'Internet Explorer'"
##VBoxManage --nologo guestcontrol b307622e-6b5e-4e47-a427-84760cf2312b execute --image "" --username RailroadGuest --password bnsf1234

VBoxManage --nologo guestcontrol b307622e-6b5e-4e47-a427-84760cf2312b execute --image "C:\Program/ Files\Internet/ Explorer\iexplore.exe" --username RailroadGuest --password bnsf1234 --wait-exit --wait-stdout

echo ""
echo "Saving the VM's state now"
VBoxManage controlvm b307622e-6b5e-4e47-a427-84760cf2312b savestate

sleep 2

#Check VM state
echo ""
echo "Check the VM state"
VBoxManage showvminfo b307622e-6b5e-4e47-a427-84760cf2312b | grep State

exit

Minhas desculpas por quaisquer erros, esta é a minha primeira vez postando no askubuntu.Thanks uma tonelada de antecedência. Isso tem sido muito útil. Precisa disso para os convidados da BNSF, seu emulador Mainframe funciona exclusivamente no Internet Explorer com Java.

    
por TheWickerman666 01.10.2012 / 09:36

2 respostas

3

Ele basicamente diz que você pode fazer isso:

  1. Crie uma máquina virtual, como uma máquina virtual do Windows.
  2. Faça login na máquina virtual.
  3. Muda a máquina virtual para o modo "sem costura"
  4. Salve o estado da máquina virtual na janela principal da Caixa Virtual.
  5. Crie um script bash com os comandos VBoxManage , para que você possa fazer algo como ./runinwindows "C:\some\path\executable.exe"

Por exemplo:

#!/bin/bash
# Start the VM
VBoxManage startvm "<Name_of_VM>"

# Run the executable
VBoxManage --nologo guestcontrol "<Name_of_VM>" execute --image "" --username windowsuser --password password --wait-exit --wait-stdout

# Save the current machine state for the next time you run the script.
VBoxManage controlvm "Name_of_VM" savestate

Em seguida, você poderia executar um executável do Windows (neste caso) no seu terminal, mas ele estaria sendo executado em uma máquina virtual.

    
por Sly 01.10.2012 / 09:43
0

Eu escrevi um script para controlar uma máquina virtual usando o VBoxManage. você pode executar comandos usando o script assim:

./vmcontrol.sh -m [VMName] [Your Command]

O script:

#!/bin/bash
#Creation du script vmcontrol.sh

function execute
{    
    vmname=$1;
    command=$2;
    shift 2;
    VBoxManage --nologo guestcontrol $vmname execute --image $command --username root --password root --wait-exit --wait-stdout --wait-stderr -- $@ 2>&1  ;      
}

param=$1;
#Execution d'une commande
if [ $param = "-e" ]
then
    command=$2;
    shift 1;
    execute "Xubuntu" $@ ;
#Execution d'une commande dans une vm donnée
elif [ $param = "-m" ]
    then 
        vmname=$2;
        command=$3;
        shift 1;
        execute $@
#Allumer une machine virtuelle donnée
elif [ $param = "-s" ]
    then
        vmname=$2;
        VBoxHeadless --startvm $vmname;
elif [ $param = "-c" ]
    then
        vmname=$2;
        VBoxManage clonevm Xubuntu --mode machine --name $vmname --basefolder /home/VMs --register ;
elif [ $param = "-r" ]
    then
        vmname=$2;
        VBoxManage unregistervm $vmname  --delete ;
elif [ $param = "-vbox" ]
    then
        startx virtualbox;
elif [ $param = "-i" ]
     then
    vmname=$2;
        if [ $vmname = "vms" ]
            then
            VBoxManage list vms
        elif [ $vmname = "runningvms" ]
            then
            VBoxManage list runningvms
        else 
            #Erreur 
            echo "error in commmande";
        fi
elif [ $param = "-sv" ]
    then
        vmname=$2;
        VBoxManage startvm $vmname ;
elif [ $param = "-p" ]
    then
    vmname=$2;
    VBoxManage controlvm $vmname  acpipowerbutton;
    else 
        #Erreur 
        echo "error in commmande";
fi
    
por user141420 18.03.2013 / 17:54

Tags