Linux Vmrun超时命令

Linux Vmrun超时命令,linux,windows,bash,vmware,Linux,Windows,Bash,Vmware,我编写了一个脚本,使用VMrun运行vmwarewindowsgest,在该映像中运行脚本并关闭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

我编写了一个脚本,使用VMrun运行vmwarewindowsgest,在该映像中运行脚本并关闭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来宾系统中运行脚本。有没有办法等到映像启动后再继续执行命令?

我将做一些假设:

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"

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

是否有类似于:vmstatus的命令?如果您获得vm状态的状态。您可以使用shell脚本进行检查。您使用的是VMware Workstation、VMware vSphere还是其他?是的,您可以ping机器并等待网络启动