Como iniciar um script dentro de uma VM a partir do host?

4

Apresentação do ambiente:

  • Máquina Host: Ubuntu 12.04 LTS
  • Máquina Convidado: Ubuntu 12.04 LTS. Dentro desta VM, existe um my_program.py .

  • Sistema de virtualização: VirtualBox 4.3

Pergunta:

Existe alguma maneira de iniciar my_program.py a partir da máquina host?

    
por Takkat 01.07.2014 / 17:09

2 respostas

6

Você pode usar o Vboxmanage para fazer isso. A forma do comando é

VBoxManage guestcontrol <uuid|vmname> exec[ute]
            --image <path to program> --username <name>
            [--passwordfile <file> | --password <password>]
            [--environment "<NAME>=<VALUE> [<NAME>=<VALUE>]"]
            [--verbose] [--timeout <msec>]
            [--wait-exit] [--wait-stdout] [--wait-stderr]
            [--dos2unix] [--unix2dos]
            -- [[<argument1>] ... [<argumentN>]]

Para executar seu script python, você pode digitar o seguinte - stdout e stderr são retornados para a máquina host por meio deste comando

VBoxManage guestcontrol "Name of Virtual Machine Goes Here" exec --image /path/to/my/script --username UserNameGoesHere --password PasswordGoesHere --wait-exit --wait-stdout --wait-stderr

No meu caso, o script de teste foi

#!/usr/bin/python
print "hello"

Você pode encontrar informações sobre isso iniciando o programa VirtualBox e selecionando Ajuda no menu, e a seção específica que você está procurando é 8.31. VBoxManage guestcontrol

    
por Charles Green 01.07.2014 / 17:13
1

A maneira mais fácil de iniciar um aplicativo no guest é enviar uma tecla pressionada para o convidado do host. No convidado, o aplicativo está configurado para iniciar em um pressionamento de tecla (usando configurações - > atalhos de teclado ou ccsm ou de qualquer outra forma). A partir de um terminal ou de um script, enviamos a tecla pressionada para guest, ao ouvirmos que o sistema operacional convidado inicia o programa / aplicativo.

Para enviar um pressionamento de tecla, use a opção VBoxManage keyboardputscancode
Por exemplo, VBoxManage controlvm [name] keyboardputscancode 1d 38 e0 53 enviará Ctrl + Alt + Delete e VBoxManage controlvm [name] keyboardputscancode 38 24 enviará Alt + J .

A vantagem deste método é que você não precisa instalar nenhum software, nem mesmo adições de convidados. Você não precisa configurar nenhuma rede, ssh, senhas, etc. Os códigos de verificação de uma chave podem ser encontrados aqui .

    
por totti 26.07.2014 / 11:37