Удаленный доступ и загрузка моего iMac?

Удаленный доступ и загрузка моего iMac?

Я использую свой iPad для удаленной разработки приложений (я тестирую, когда возвращаюсь к своему iMac) и для внесения других небольших изменений в файлы на моем компьютере. До сих пор я использовал TeamViewer для iOS и iMac, и это работало, пока я не попытался получить доступ к своему iMac с машины Windows 7. Затем, однажды, TeamViewer завис.

Я ищу способ перезагрузить свой Mac, когда удаленная программа дает сбой. Есть ли Applescript, который может это сделать?

Кроме того, существует ли программа VNC с совместимым приложением для iOS, поддерживающим удаленную перезагрузку?

решение1

Вам не нужно перезагружать компьютер, чтобы повторно запустить 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при запуске launchdload. Чтобы избавиться от элемента (если вам действительно нужно выйти из TeamViewer, например), просто замените load в приведенной выше команде на unload.

В качестве альтернативы,лингонпредоставляет графический интерфейс для launchd и может быть проще.

решение2

Вы можете настроить задачу на iMac для проверки существования процесса TeamViewer и перезагрузки, если он не найден. Но почему бы просто не перезапустить процесс, а не перезагружать всю машину?

решение3

Это довольно тривиально, если вы знакомы с командной строкой. Для iOS существует множество клиентов SSH: вам нужно будет активировать «Удаленный вход» на панели настроек общего доступа.

После того, как это будет сделано и все необходимые сетевые мелочи будут выполнены, все, что вам нужно будет сделать для перезагрузки, это подключиться по SSH к вашему iMac и запустить $ sudo shutdown -r now, что перезагрузит машину. Если предположить, что это все, что вам нужно сделать для запуска TeamViewer, то все должно работать нормально.

Кто-то еще предложил перезапустить процесс. Опять же, если предположить, что все, что вам нужно сделать для активации TeamViewer, это запустить приложение, то вам сначала нужно будет принудительно завершить существующий зависший процесс: что-то вроде $ sudo killall TeamViewer, а затем перезапустить приложение с помощью $ open /Applications/TeamViewer.appили чего-то похожего.

Связанный контент