5

我有一个 Automator 工作流程来 ping 服务器,并下载我经常使用的计划的最新副本。然后将此时间表复制到我的保管箱中,以便我可以在手机上查看它。在工作流下载最新计划之前,它会从 Dropbox 中删除旧计划。

这很好用,除非我没有有效的互联网连接。当我没有有效的 Internet 连接时,工作流程仍会打开保管箱,删除旧的日程安排,并尝试下载最新的日程安排。因为没有连接,所以不会下载任何东西。然后,如果我的连接变为活动状态,则空的保管箱将同步,并且计划将从我的手机中删除。

我正在尝试添加几行 applescript 代码来 ping 服务器以查看我是否有活动连接。如果我不这样做,请等待大约 5 秒钟,然后再次 ping。我想要 5 次 ping 尝试,此时如果我仍然没有活动连接,那么我想完全退出。

我对applescript很陌生,所以我对如何处理来自命令的错误感到困惑,在这种情况下,是ping。如果命令“ping -o www.apple.com”失败,请等待 5 秒并重试 ping。如果 5 次尝试失败,则完全退出。

4

2 回答 2

6

也许是这样的?

repeat with i from 1 to 5
    try
        do shell script "ping -o www.apple.com"
        exit repeat
    on error
        delay 5
        beep
        if i = 5 then error number -128
    end try
end repeat
say "Connected"
于 2012-11-05T02:00:33.380 回答
4

如果域不可用,上述脚本会导致 automator 的 applescript 挂起。如果您添加 -t X ,它在 AppleScript 编辑器中工作正常,其中 X 是秒数 ping 应该超时,否则它也会无限期挂起。

repeat with i from 1 to 2
    try
        do shell script "ping -o -t 2 www.googleasda.com"
        exit repeat
    on error
        say "Couldn't connect"
        delay 2
        say "Error after delay 5"
        beep
        if i = 2 then error number -128
    end try
end repeat
say "Connected"
于 2014-04-10T17:40:22.590 回答