2012-11-05 47 views
5

我有一個Automator工作流程來ping服務器,並下載我經常使用的最新日程表副本。這個時間表然後被複制到我的保管箱,所以我可以在我的手機上查看它。在工作流程下載最新的時間表之前,它會從保存箱中刪除舊的時間表。檢查與Applescript/Automator的有效Internet連接

這很有效,除非我沒有活動的互聯網連接。當我沒有活動的互聯網連接時,工作流程仍會打開Dropbox,刪除舊的日程安排,並嘗試下載最新的日程安排。因爲沒有連接,它不會下載任何東西。然後,如果我的連接變爲活動狀態,則空保存箱將同步,並且計劃將從我的手機中刪除。

我想添加幾行的蘋果代碼來ping一個服務器,看看我是否有一個活動的連接。如果我不這樣做,然後等待5秒鐘並再次ping。我想要5次嘗試,如果我還沒有活動連接,那麼我想完全退出。

我對applescript很陌生,所以我會掛上如何處理來自命令的錯誤,在這種情況下,ping。如果命令「ping -o www.apple.com」失敗,請等待5秒鐘並重試Ping。如果5次嘗試失敗,則完全退出。

+0

也許你可以發表一些代碼給別人看看?還請檢查如何使用Markdown格式。這將允許您以等寬字體格式化上述ping命令 - 編輯框右側的幫助鏈接提供了一個很好的摘要 – marko

+0

感謝您的建議。我對stackoverflow是新的,所以我會記住未來。下面的答案正是我所需要的,所以現在不需要發佈任何東西。 –

回答

4

也許是這樣的?

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" 
3

上述腳本會導致automator的applescript在域不可用時掛起。它在AppleScript編輯器中工作正常,如果您添加-t X,其中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"