Вчера я нашел скрипт, который заставляет мой 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?
Я совершенно новичок в написании сценариев, поэтому я могу попросить разъяснений по любым ответам.
Я хотел бы включить ссылку на оригинальный сценарий, но я не могу вспомнить, где я его нашел.
Спасибо.
Мне удалось решить эту проблему, «позаимствовав» некоторый код из найденного блога .
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". С ненадежными языками вы никогда не знаете, что может решить вашу проблему.
Ричард Косгроув