【问题标题】:Check for active internet connection with Applescript/Automator使用 Applescript/Automator 检查活动的 Internet 连接
【发布时间】:2014-04-11 02:03:16
【问题描述】:

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

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

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

我对 applescript 很陌生,所以我一直在纠结如何处理来自命令的错误,在本例中是 ping。如果命令“ping -o www.apple.com”失败,请等待 5 秒并重试 ping。如果 5 次尝试失败,则完全退出。

【问题讨论】:

  • 也许您可以发布一些代码供其他人查看?另外请查看如何使用 Markdown 格式。这将允许您将上面的 ping 命令格式化为等宽字体 - 编辑框右侧的帮助链接提供了很好的摘要
  • 感谢您的建议。我是 stackoverflow 的新手,所以我会记住这一点。下面的答案正是我所需要的,所以现在不需要发布任何内容。

标签: applescript action automator


【解决方案1】:

也许是这样的?

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"

【讨论】:

    【解决方案2】:

    如果域不可用,上述脚本会导致 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2013-12-01
      • 2010-11-08
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多