2015-04-04 82 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