Applescript: автоматическая проверка и перемонтирование тома сервера перестали работать

Вчера я нашел скрипт, который заставляет мой Mac (MacBook Pro с El Capitan) автоматически проверять наличие тома на сервере и перемонтировать его в случае обрыва соединения. Я немного адаптировал его к этому, чтобы мой медиасервер перемонтировался при падении (что бывает часто):

on idle
    tell application "Finder"
        set isConnected to disk "Plex" exists
    end tell
    if isConnected = false then
        try
            mount volume "Plex" on server "smb://USER:PASSWORD@192.168.0.10:445"
        end try
    end if
    return 5
end idle

Я сохранил сценарий как приложение редактора сценариев, используя параметр «Оставаться открытым после запуска обработчика», поэтому он работает в фоновом режиме.

Вчера работал нормально. Сегодня, когда он пытается перемонтировать том Plex, я получаю сообщение об ошибке «Произошла проблема с подключением к серверу».

Однако я могу подключиться к серверу с помощью команды «Подключиться к серверу», введя тот же IP-адрес, идентификатор пользователя и пароль.

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

Есть ли что-то в сценарии, который я зашифровал, или это проблема с Mac или NAS?

Я совершенно новичок в написании сценариев, поэтому я могу попросить разъяснений по любым ответам.

Я хотел бы включить ссылку на оригинальный сценарий, но я не могу вспомнить, где я его нашел.

Спасибо.

Ответы (2)

Мне удалось решить эту проблему, «позаимствовав» некоторый код из найденного блога .

on idle
    set intnt to do shell script "ping -c 1 192.168.0.10; echo -n"
    set paras to number of paragraphs in intnt
    if paras < 5 then
    else
        set serverIP to "smb://192.168.0.10/Plex"
        set UserAccount to "[USERNAME]"
        set ServerPassword to "[PASSWORD]"
        set serverVolume to UserAccount
        tell application "Finder"
            try
                if disk serverVolume exists then
                else
                    mount volume serverIP as user name UserAccount with password ServerPassword
                end if
            end try
        end tell
    end if
    return 5
end idle

Я также обнаружил, что если вы добавите этот код в конец файла info.plist приложения, его значок не появится в Dock.

Просто скопируйте и вставьте эти строки перед последней записью /dict.

Недостатком является то, что мне нужно использовать Диспетчер активности или Терминал, чтобы закрыть приложение, но это делает док-станцию ​​более аккуратной.

<key>LSUIElement</key>
<true/>

AppleScript может быть немного глючным. Недавно у меня было несколько скриптов, которые глючили без видимой причины. Я внес небольшое изменение, сохранил, затем отменил изменение и снова сохранил его, и проблема исчезла... Пока она не вернулась через неделю или около того (старая, повторяющаяся проблема). Я не совсем уверен, исправит ли это в вашем случае, но одно замечание: вам не нужно указывать номер порта в конце доменного имени или IP-адреса, если порт используется по умолчанию для протокол. Порт 445 используется по умолчанию для SMB. Вы можете удалить всю часть ":445". С ненадежными языками вы никогда не знаете, что может решить вашу проблему.

Спасибо. Я попытался удалить ссылку «445», но это не устранило ошибку.