Como passar argumentos do shell com o VBoxManage guestcontrol?

1

Eu executo um comando da máquina host na máquina convidada (tanto o Ubuntu) quanto

VBoxManage guestcontrol Ubuntu1 run --exe "script.sh" --username xx --password xx --wait-stdout

onde o script de shell na máquina convidada é como

#!/bin/bash
echo 

Como posso passar o argumento 1 durante a execução do script de shell?

Eu assumi que deveria funcionar como

run --exe "script.sh arg1"

mas isso não acontece.

    
por Googlebot 23.04.2017 / 21:50

1 resposta

1

SSH

Podemos executar um aplicativo em um convidado virtual com uma sessão SSH do host para esta máquina. No entanto, isso requer que a rede esteja habilitada e que o openssh-server está instalado é executado na máquina convidada.

VBoxManage guestcontrol

Como alternativa, podemos usar recursos internos do Virtual Box para executar um programa em uma VM guest em execução. Isso pode ser feito com VBoxManage guestcontrol .

A linha de exemplo abaixo executará apenas ls na raiz da máquina virtual:

VBoxManage --nologo guestcontrol "<vm_name>" run --exe "/bin/ls" --username <guestuser> --password <password> --wait-stdout

A execução de um aplicativo gráfico no guest exige que definamos a variável de ambiente DISPLAY para o convidado com a opção --putenv . O próximo exemplo será executado e abrirá o gedit no convidado:

VBoxManage --nologo guestcontrol "<vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout

Também podemos passar opções para abrir um programa. O próximo exemplo abrirá um arquivo vmtest no guest gedit:

VBoxManage --nologo guestcontrol "vm_name" run --exe "/usr/bin/gedit" --username <guestuser> --password <password> --putenv "DISPLAY=:0" --wait-stdout -- gedit/arg0 vmtest

Opções e argumentos são separados do comando com -- , como pode ser melhor visto no exemplo abaixo de um script do host.

Exemplo de script de host

Abaixo, o script reproduzirá um arquivo example.ogg usando paplay em uma máquina convidada quando executado no host. Substitua as variáveis por valores apropriados.

#!/bin/bash

VM_NAME=myvm
VM_USER=takkat
VM_PASSWD=topsecret
VM_EXEC=paplay
VM_EXEC_PATH=/usr/bin/paplay
VM_ARGS=/home/takkat/Music/example.ogg

VBoxManage --nologo guestcontrol $VM_NAME run --exe $VM_EXEC_PATH \
--username $VM_USER --password $VM_PASSWD --wait-stdout \
-- {$VM_EXEC}/arg0 $VM_ARGS
    
por Takkat 23.04.2017 / 22:04