嘿,伙计们,我的Applescript不像我期望的那样。我的错误在哪里?
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我想要平我的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现在,我不知道如何让循环使用从ping获得的on命令
发布于 2015-04-04 18:41:20
即使你自己找到了解决方案,这里也没有答案,所以我试着在这里完成它。当我们将两个字符串放在一起时,我们将看到“100.0%丢包”。正如您所看到的,当您寻找"0%的数据包丢失“时,当您只发送一个数据包时,它总是返回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发布于 2015-04-06 07:51:25
工作脚本现在:
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 activatehttps://stackoverflow.com/questions/29446222
复制相似问题