我已经厌倦了早上开始我需要多少步骤。是的,启动我的整个环境只需要几分钟,但我真的只是在启动时运行一个命令并准备立即启动。
我正在连接到SqlServer的Rails上编写应用程序。为了开发它,我有一个我在VM上使用的本地版本的DB。我的手动过程如下:
Run VirtualBox.
Start the VM.
When the VM is done booting:
Open terminal
Run `rails s`
When rails is done starting:
open browser
navigate to localhost:3000 and start developing
Run Sublime
我喜欢在一个剧本中这样做:
VirtualBox Windows7 &
sublime &
google-chrome &
但是,一旦虚拟机完成启动,我无法弄清楚如何仅运行此命令 :
gnome-terminal --working-directory=git/my_project --tab -e 'rails s' --tab -e 'git status'
此外,在 rails s成功完成后启动chrome 会很好(但不是必须)。
这甚至可能吗?
我并不反对投票,但感觉这是VirtualBox应该能够做得更自然的事情。
修改
来自评论:
我正在使用具有两个桥接接口的主机网络(一个用于无线接口,一个用于有线接口)可用。 (它允许我使用VM,无论我是否连接到网络,并允许我在有线和无线之间自由切换,而不会注意到差异)。
答案 0 :(得分:1)
我将如何做:
ipconfig /all
,可以用vbscript / python完成。)route -n
输出)。由于两者都使用相同的物理接口,因此网关将是相同的(假设NAT& ONE物理接口)。使用tcpdump,等待ping数据包到网关。选择“默认网关”是因为这是主持人和VM可以找到彼此独立的。其他选择是硬编码主机的地址。
主机上的主机tcpdump退出后,表示虚拟机处于活动状态。启动到Windows桌面。
答案 1 :(得分:0)
之前我调查了这条调查线,我认为Devil's Pie是最接近你设置的:
答案 2 :(得分:0)
您可以尝试从此开始(VBoxManager startvm):
How to automatically start and shut down VirtualBox machines?
然后查看一些工作脚本,以便在VM完成后按顺序添加到init.d和/或rc.local:
答案 3 :(得分:0)
我需要编排类似的东西。我使用Windows VM(来宾)作为Linux笔记本电脑(主机)的代理(它运行仅Windows的公司VPN客户端)。方法是使访客完全自动化,并等待其准备就绪:
(鱿鱼还可以用作此复杂但非常方便的机制的备份,我仍然可以通过开瓶器等进行ssh操作)
因此,我在主机上运行此脚本(显示了简化版本):
#!/bin/bash
VM=vm #Name of the Virtual Machine
SCRIPT_DIR=/some/dir
PROXY_ADDRESS=localhost:3128
REMOTE_CURL_HOST=any.corporate.hostname
function waitloop() {
echo -n "Waiting to hear from $REMOTE_CURL_HOST "
while ! curl -s -m 5 --proxy $PROXY_ADDRESS $REMOTE_CURL_HOST > /dev/null ; do
echo -n .
sleep 10
done
echo "!"
}
# a separate script that takes down my routes, you may not need this.
bash $SCRIPT_DIR/network-config-vboxnet0.sh down
# error is OK if it's already running
vboxmanage startvm $VM
waitloop && bash $SCRIPT_DIR/network-config-vboxnet0.sh up && echo "Completed"
本质上,脚本会一直等到curl通过虚拟机工作为止。