Проверьте активное подключение к Интернету с помощью Applescript / Automator

У меня есть рабочий процесс Automator для проверки связи с сервером и загрузки последней копии расписания, которое я часто использую. Затем это расписание копируется в мой Dropbox, чтобы я мог просматривать его на своем телефоне. Прежде чем рабочий процесс загрузит самое новое расписание, он удаляет старое расписание из Dropbox.

Это работает хорошо, за исключением случаев, когда у меня нет активного подключения к Интернету. Когда у меня нет активного подключения к Интернету, рабочий процесс по-прежнему откроет Dropbox, удалит старое расписание и попытается загрузить новейшее. Поскольку нет связи, ничего не скачивает. Затем, если мое соединение станет активным, пустой Dropbox будет синхронизироваться, и расписание будет удалено с моего телефона.

Я пытаюсь добавить несколько строк кода applescript для проверки связи с сервером, чтобы узнать, есть ли у меня активное соединение. Если я этого не сделаю, подождите около 5 секунд и снова пингуйте. Я хочу сделать 5 попыток проверки связи, и на этом этапе, если у меня все еще нет активного соединения, я хочу полностью выйти.

Я новичок в applescript, поэтому меня не интересует, как обрабатывать ошибку из команды, в данном случае ping. Если команда «ping -o www.apple.com» не удалась, подождите 5 секунд и повторите попытку. Если 5 неудачных попыток, то полностью выйдите.


person 24fos    schedule 05.11.2012    source источник
comment
Возможно, вы могли бы опубликовать какой-нибудь код, чтобы другие посмотрели на него? Также ознакомьтесь с тем, как использовать форматирование Markdown. Это позволит вам отформатировать команду ping выше моноширинным шрифтом - ссылка справки справа от поля редактирования дает хорошее резюме.   -  person marko    schedule 05.11.2012
comment
Спасибо за совет. Я новичок в stackoverflow, поэтому буду помнить об этом в будущем. Ответ ниже - это именно то, что мне нужно, поэтому сейчас не нужно ничего публиковать.   -  person 24fos    schedule 06.11.2012


Ответы (2)


Может как то так?

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"
person adayzdone    schedule 05.11.2012

Вышеупомянутый скрипт вызывает зависание 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"
person David    schedule 10.04.2014