Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 苹果脚本,如果你不喜欢的话_Macos_Applescript_Wake On Lan - Fatal编程技术网

Macos 苹果脚本,如果你不喜欢的话

Macos 苹果脚本,如果你不喜欢的话,macos,applescript,wake-on-lan,Macos,Applescript,Wake On Lan,嘿,伙计们,我的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

嘿,伙计们,我的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
我想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

现在,我不知道如何让循环使用从ping获得的on error命令,即使您自己找到了解决方案,这里也没有答案,所以我尝试在这里完成它。字符串当我们将两条字符串放在一起时,我们将看到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

现在的工作脚本是:

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

请将您的工作代码作为答案,并标记为“正确”。谢谢您的回答。但是,当您ping并出现错误时,整个程序就会停止。如果ping没有返回0,我就无法让它工作。更新了帖子,命令现在将运行true。