2015-04-04 83 views
0

嘿傢伙我的Applescript沒有做我期望的。 我的錯誤在哪裏?Apple腳本如果發佈

try 

set NAS to do shell script "ping -c 1 192.168.222.5" 
if NAS contains "100.0% packet loss" then repeat until NAS contains "0% packet loss" 
    do shell script "python /Users/Selim/Desktop/wol2.0.sh" 
    set NAS to do shell script "ping -c 1 192.168.222.5" 
end repeat 
delay 20 
tell application "Terminal" to activate 
end try 

我想ping到我的NAS,當我沒有得到響應我想喚醒他,但我的腳本停止發送ping後沒有響應。 任何想法我做錯了什麼? 我想發送數據包直到NAS喚醒。

我已經改變了代碼

try 
do shell script "ping -c 1 192.168.222.5" 
on error 
set NAS to "100% packet loss" 
repeat while NAS contains "100% packet loss" 
    do shell script "python /Users/Selim/Desktop/wol2.0.sh" 
    set NAS to do shell script "ping -c 1 192.168.222.5" 
    if NAS contains "0% packet loss" then exit repeat 

end repeat 
say "Server startet, 20 sek" 
delay 20 
end try 

tell application "Terminal" to activate 

現在我不知道我是怎麼循環的錯誤命令至極與工作,我從平

+1

請把你的工作的代碼作爲一個答案,並將其標誌「正確的」。 – 2015-04-04 13:40:32

回答

0

即使你已經找到了獲得自己解決這裏沒有答案,所以我試着在這裏完成它。當我們將兩個字符串放在eachother之上時,我們將看到「100. 0%數據包丟失」。正如您在查看「0%數據包丟失」時所看到的,當您僅發送1個數據包時,它總是會返回true。爲了安全起見,不要抱歉,最好匹配整個行「傳輸1個數據包,接收1個數據包,丟失0.0%」。你的第一個解決方案將通過改變比賽來解決(你也可以當if語句,如果ping成功的第一次重複將無法運行,一旦擺脫):

set NAS to do shell script "ping -c 1 192.168.222.5 || true" 
repeat until NAS contains "1 packets transmitted, 1 packets received, 0.0% packet loss" 
    do shell script "python /Users/Selim/Desktop/wol2.0.sh" 
    set NAS to do shell script "ping -c 1 192.168.222.5 || true" 
end repeat 
delay 20 
tell application "Terminal" to activate 

更新:一個更好的版本誰不匹配來自ping的打印字符串,但匹配返回的數字並將其強制爲布爾值。

repeat until ping("192.168.222.5") 
    do shell script "python /Users/Selim/Desktop/wol2.0.sh" 
end repeat 
delay 20 
tell application "Terminal" to activate 

on ping(IPNumber) 
    return (do shell script "ping -t 1 -c 1 " & IPNumber & " >/dev/null && echo yes || echo no") as boolean 
end ping 
+0

謝謝你的回答。但是當你發現一個錯誤時,整個程序就會停止。如果沒有嘗試,我不會得到它的工作。 – 2015-04-06 08:04:57

+0

更新後,如果ping不返回0,命令現在將運行「true」。 – 2015-04-06 12:10:00

+0

感謝您的努力,我現在學到了更多。 – 2015-04-06 16:19:42

0

工作現在腳本:

try 
do shell script "ping -c 1 192.168.222.5" 
on error 

set NAS to "q" 

repeat until NAS contains "1 packets transmitted, 1 packets received, 0.0% packet loss" 
    do shell script "python /Users/Selim/Documents/scripte/wol2.0.sh" 
    delay 0.1 
    try 
     set NAS to do shell script "ping -c 1 192.168.222.5" 

    end try 
end repeat 

delay 5 
end try 

tell application "Kodi" to activate