【问题标题】:Vmrun timeout commandvmrun 超时命令
【发布时间】:2013-07-11 05:20:28
【问题描述】:

我编写了一个脚本,使用 VMrun 运行 Vmware windows guest,在该映像中运行脚本并关闭 VMware 会话。脚本如下:

vmrun start XP/XP/"Windows XP Pro SP3_original.vmx"  

~/Desktop$ vmrun -gu ** -gp ** runProgramInGuest XP/XP/"Windows XP Pro SP3_original.vmx" "C:\Documents and Settings\Computer\Desktop\script.bat"

vmrun stop XP/XP/"Windows XP Pro SP3_original.vmx"

但是,在映像启动并运行之前,脚本会执行最后两个命令,因此无法在 Windows 客户机中运行脚本。有什么方法可以等到图像启动然后继续执行命令?

【问题讨论】:

  • 有没有类似的命令:vmstatus?如果您获得 vm state 的状态。你可以用shell脚本检查一下。
  • 您使用的是 VMware Workstation、VMware vSphere 还是其他?
  • 可以,可以ping通机器,等待网络启动

标签: linux windows bash vmware


【解决方案1】:

我将做一些假设:

1.) 您的机器将获得一个有效的 IP 地址,而不是 Windows APIPA 地址。

2.) 您正在运行 VMware Workstation(具有readVariable 选项)

如果是这种情况,您可以 ping 机器并等待有效 IP,然后以这种方式执行您的脚本:

#!/bin/bash

vmrun start XP/XP/"Windows XP Pro SP3_original.vmx" 

win_ip=$(vmrun -T ws readVariable $YOUR_MACHINE guestVar ip)

# First loop waits for the address variable to populate
while [ -z $win_ip ]
do
   win_ip=$(vmrun -T ws readVariable $YOUR_MACHINE guestVar ip)
done

# Second loop waits for a valid address
while [ ! -z $(printf $win_ip | grep "169.254") ]
do
   win_ip=$(vmrun -T ws readVariable $YOUR_MACHINE guestVar ip)
done 

~/Desktop$ vmrun -gu ** -gp ** runProgramInGuest XP/XP/"Windows XP Pro SP3_original.vmx" "C:\Documents and Settings\Computer\Desktop\script.bat"

vmrun stop XP/XP/"Windows XP Pro SP3_original.vmx"

这样做可以确保网络完全初始化,以防您的脚本依赖网络来实现任何功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 2013-04-03
    • 2013-09-30
    • 2019-12-06
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多