Выключение как Mac

Выключение как Mac

У меня есть приложение для iPhone, которое может удаленно выключать компьютер Mac. Я хотел бы, чтобы это приложение выключало мой компьютер Ubuntu.

При попытке закрыть приложение я получаю следующие сообщения:

Когда Ubuntu выключен:

"Ошибка подключения"

Когда Ubuntu включен:

"zsh:1: команда не найдена: osascript"

Это заставляет меня думать, что приложение действительно может получить доступ к zsh. И если так: не могу ли я сделать псевдоним для "osascript" таким образом:

alias osascript="shutdown -h now"

Проблема в том, что я все еще получаю сообщение (в приложении для iPhone):

"zsh:1: команда не найдена: osascript"

Есть идеи почему? Я предполагаю, что приложение использует SSH и использует то же имя пользователя, что и псевдоним в Ubuntu.

Для failsearch: Должен ли я увидеть команду удаленного доступа в ".zsh_history"? Я не вижу здесь ни одной команды из приложения.

решение1

Не используйте приложения, которые не поддерживают Linux. «RMsrv Reboot» отлично работает при запуске и выключении Linux.

решение2

Сообщение об ошибке по крайней мере соответствует неудачной попытке запустить команду напрямую через ssh, например ssh someuser@somehost somecommand. В зависимости от того, как zshзапущено и в какой файл конфигурации вы поместили псевдоним приложением, возможно, оно просто не было загружено. Кроме того, файл истории будет записан только интерактивными сеансами (что является "Good Thing™": представьте, если бы каждый скрипт zsh сбрасывал свое содержимое в ваш файл истории при выполнении).


osascriptэто интерпретатор командной строки AppleScript (благодаряквадратныйдля подсказки). Таким образом, он недоступен для Ubuntu. Но вполне вероятно, что приложение запускает какой-то небольшой скрипт через параметр командной строки, чтобы выключить Mac.

  • Если вы хотите только выключить машину, вы можете просто разместить /usr/bin/osascriptна машине Ubuntu скрипт, который ее выключает. Например:

    #!/bin/sh
    sudo /sbin/shutdown -h now
    

    Это предполагает доступ без пароля по крайней мере к shutdown -h now. Вы можете добиться этого, добавив следующую строку в свой /etc/sudoersили файл, который включен в него:

    YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
    
  • Если вы хотите реагировать на различные команды (выключение, перезагрузка и т. д.), вы можете попытаться получить параметры командной строки, которые приложение использует для них. Для этого сначала поместите следующий скрипт с именем osascriptв /usr/bin(Теоретически любой путь, указанный в PATHдолжен подойти. К сожалению, sshчасто использует собственные настройки для PATH. См. ниже.) на вашей машине Ubuntu:

    #!/bin/sh
    logfile='/path/to/logfile'
    echo "$@" >> "$logfile"
    echo '---->8----' >> "$logfile"
    

    Не забудьте сделать его исполняемым ( chmod 755 /usr/bin/osascript).

    Теперь вы можете запустить различные варианты, которые может предложить приложение, и каждый раз проверять вывод в файле журнала ( tail -F /path/to/logfileможет помочь). Теперь вам нужно только найти различия в каждом выводе и написать скрипт, который будет реагировать соответствующим образом.


Как упоминалось выше, sshможет использовать свои собственные настройки для PATH, которые могут существенно отличаться от настроек, которые вы получаете в своем терминальном сеансе ( echo $PATH). К счастью, вы можете легко получить PATHиспользуемые с sshпомощью

    ssh localhost 'echo $PATH'

Если вы видите там /usr/local/sbinили /usr/local/bin, я предлагаю поместить скрипт туда, но подойдет любой из перечисленных каталогов.

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