2013-07-11 201 views
0

我編寫了一個腳本,使用VMrun運行Vmware windows guest,在該映像中運行腳本並關閉VMware會話。該腳本如下:Vmrun超時命令

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客戶機內的腳本。是否有任何方法可以等待圖像啓動,然後繼續執行命令?

+0

有沒有像vmstatus這樣的命令?如果你得到虛擬機狀態。你可以用shell腳本檢查它。 –

+0

您是否在使用VMware Workstation,VMware vSphere或其他? –

+0

是的,你可以ping機器並等待網絡啓動 –

回答

0

我要做出一些假設:

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" 

這樣做可確保網絡完全初始化,以防腳本依賴網絡提供任何功能。

+0

非常感謝code4me。我會嘗試並回復你。 – user2566898