'VBoxManage guestcontrol'在guest上运行shell脚本

时间:2015-02-16 09:03:02

标签: virtualbox

我有运行可通过localhost和转发端口访问的服务器的VirtualBox VM。 我需要运行一些shell脚本并根据结果实现一些业务逻辑。

我尝试了以下命令为例:

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""

但我收到了错误:

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

上面的语法有什么问题?

1 个答案:

答案 0 :(得分:3)

首先确保VBoxManage.exe在您的路径中!

其次,你必须小心你的报价。你用过:

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

你必须使用singel配额作为最外层的引用:

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

最后,您必须在参数前添加-c(以致电/bin/sh -c '...')。

完整的命令:

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"'