首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >苹果脚本如果在issiue

苹果脚本如果在issiue
EN

Stack Overflow用户
提问于 2015-04-04 12:07:24
回答 2查看 183关注 0票数 0

嘿,伙计们,我的Applescript不像我期望的那样。我的错误在哪里?

代码语言:javascript
复制
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醒来之前发送数据包。

我已经修改了密码

代码语言:javascript
复制
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命令

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-04 18:41:20

即使你自己找到了解决方案,这里也没有答案,所以我试着在这里完成它。当我们将两个字符串放在一起时,我们将看到“100.0%丢包”。正如您所看到的,当您寻找"0%的数据包丢失“时,当您只发送一个数据包时,它总是返回true。为了更好的安全比抱歉,你最好匹配整行"1包发送,1包收到,0.0%的数据包丢失“。您的第一个解决方案将通过更改匹配来解决(如果if语句,如果ping第一次成功,重复将不会运行一次):

代码语言:javascript
复制
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中打印的字符串,而是匹配返回的数字,并将其强制转换为布尔值。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-04-06 07:51:25

工作脚本现在:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29446222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档