Удаленный доступ и загрузка для моего iMac?
Я использую свой iPad для удаленной разработки приложений (я проверяю, когда вернусь к своему iMac) и для внесения других небольших изменений в файлы на моем компьютере. До сих пор я использовал TeamViewer для iOS и iMac, и он работал до тех пор, пока я не попытался получить доступ к своему iMac с компьютера под управлением Windows 7. Затем однажды TeamViewer потерпел крах.
Я ищу способ перезагрузить мой Mac при сбое удаленной программы. Есть ли Applescript, который делает это?
Кроме того, существует ли программа VNC, которая имеет совместимое приложение для iOS, которое поддерживает удаленную перезагрузку?
3 ответа
Вам не нужно перезагружаться, чтобы перезапустить TeamViewer; ты можешь получить launchd
контролировать процесс и перезапустить его в случае сбоя.
Во-первых, вам нужно определить фактический исполняемый файл. Откройте терминал и осмотрите пакет TeamViewer - исполняемый файл, скорее всего, будет /Applications/TeamViewer.app/Contents/MacOS/TeamViewer
но ваш пробег может отличаться. Чтобы проверить, что вы нашли правильный путь, введите его в терминале - если TeamViewer запускается, вы, вероятно, получили его. Либо откройте Activity Monitor во время работы TeamViewer, определите процесс TeamViewer и нажмите "Проверить" на панели инструментов. Затем на вкладке "Открытые файлы и порты" исполняемый файл, скорее всего, будет первой или второй записанной в списке (после /
).
Как только вы знаете, какую программу вы отслеживаете, вы можете создать launchd
Список недвижимости. Это файл XML, так что вы можете сделать это с помощью вашего любимого текстового редактора или, в качестве альтернативы, вы можете использовать редактор списков свойств, который устанавливается с Mac OS X Dev Tools. Создайте следующее:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>some.meaningful.name</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/path/we/identified/earlier</string>
</array>
</dict>
</plist>
Сохранить это в ~/Library/LaunchAgents/some.meaningful.name.plist
, затем откройте терминал и выполните:
launchctl load ~/Library/LaunchAgents/some.meaningful.name.plist
Это заставит launchd загрузить элемент, что заставит его отслеживать указанную программу и, если он выйдет по какой-либо причине, он будет перезапущен. Это будет работать, только если ваш пользователь вошел в систему. Чтобы запустить при загрузке, поместите plist в /Library/LaunchDaemons/some.meaningful.name.plist
, добавлять UserName
а также GroupName
пары ключ / значение и использование sudo
при беге launchd
нагрузки. Чтобы избавиться от элемента (например, если вам действительно нужно выйти из TeamViewer), просто замените load в приведенной выше команде на unload.
В качестве альтернативы, Lingon предоставляет графический интерфейс для запуска, и может быть проще.
Вы можете настроить задачу в iMac для проверки существования процесса TeamViewer и перезагрузить компьютер, если он не найден. Но почему бы просто не перезапустить процесс, а не перезагрузить всю машину?
Это довольно тривиально, если вы знакомы с командной строкой. Для iOS существует множество SSH-клиентов: вам нужно активировать "Удаленный вход" из панели настроек общего доступа.
После того, как это будет сделано, и о сетевых мелочах позаботятся, все, что вам нужно сделать, чтобы перезагрузиться, это SSH в ваш iMac и запустить $ sudo shutdown -r now
, который перезагрузит машину. Предполагая, что это все, что вам нужно сделать, чтобы запустить TeamViewer, это должно работать нормально.
Кто-то еще предложил перезапустить процесс. Опять же, предполагая, что все, что вам нужно сделать, чтобы активировать TeamViewer, это запустить приложение, вам сначала нужно принудительно завершить существующий зависший процесс: что-то вроде $ sudo killall TeamViewer
и затем перезапустите приложение с $ open /Applications/TeamViewer.app
или что-то подобное.