Daniel Rogatchevsky
Daniel Rogatchevsky

Reputation: 113

'VBoxManage guestcontrol' to run shell script on guest

I have VirtualBox VM that runs a server that can be accessed via localhost and forwarded ports. I need to run some shells scripts and implement some business logic based on the results.

I tried following command as example:

VBoxManage guestcontrol <UUID> exec --image /bin/sh --username <su username> --password <su password> --wait-exit --wait-stdout --wait-stderr -- "[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed""

but I'm getting the error:

/bin/sh: [ -d <server_folder> ] && echo : No such file or directory

What is wrong with the syntax above?

Upvotes: 1

Views: 5673

Answers (1)

Sebastian Stigler
Sebastian Stigler

Reputation: 7289

First make sure that VBoxManage.exe is in your path!

Secondly you have to be carefull with your quotations. You used:

"[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed""

you have to use singel quotaions for the outermost quotation:

'[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed"'

Finally you have to add a -c in front of your arguments (to call /bin/sh -c '...').

The complete command:

VBoxManage guestcontrol <UUID> exec --image /bin/sh --username <su username> --password <su password> --wait-exit --wait-stdout --wait-stderr -- -c '[ -d /<server_folder>/ ] && echo "OK" || echo "Server is not installed"'

Upvotes: 3

Related Questions