Вероятно, это связано с тем, что вы PATH
... попробуйте указать полный путь к psshutdown
или date
.
Сеанс SSH без оболочки или PTY, скорее всего, будет иметь очень простой PATH
набор ...
Я создаю два скрипта Bash на моем Raspberry Pi, на котором работает стандартный дистрибутив Linux на основе Debian: один для сна моего настольного компьютера и один для его выключения.
Скрипт для выключения компьютера работает нормально, и его содержимое:
sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "shutdown /s"
Мой рабочий стол работает под управлением Windows 10 и встроенного SSH-сервера, который поставляется с Windows 10.
Однако, когда я пытаюсь запустить скрипт для сна моего компьютера, мне выдается следующее:
Packet integrity error (165 bytes remaining) at ../channels.c:2401 Disconnecting: Packet integrity error.
Содержимое этого скрипта:
sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "psshutdown /d"
«psshutdown» относится к утилите Windows Sysinternals .
Странно, но выполнение команды psshutdown /d
из командной строки администратора, когда я сидел за моим рабочим столом, успешно спит мой компьютер. Это также работает, если я подключаюсь через SSH от Pi без указания команды для запуска после подключения, то есть sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME
, а затем запускаю psshutdown /d
команду. Выполнение той же команды, что и в сценарии непосредственно в Bash, завершается неудачно с тем же выводом, что и выше.
Интересно, что при попытке запустить некоторые другие команды таким же образом, как в сценарии сна, некоторые работают, а некоторые выдают другую ошибку. Например, sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "whoami"
работает нормально и возвращает правильный вывод, но sshpass -p "MYPASSWORD" ssh administrator@MYCOMPUTERNAME "date"
производит выводexec request failed on channel 0
Что вызывает сбой сценария сна и как я могу решить проблему, чтобы успешно выполнить команду через SSH?
Примечание: я понимаю, что не является идеальным хранить пароль SSH в виде простого текста в файле сценария, но настройка аутентификации на основе ключей на встроенном сервере SSH является проблемой на следующий день.
Вероятно, это связано с тем, что вы PATH
... попробуйте указать полный путь к psshutdown
или date
.
Сеанс SSH без оболочки или PTY, скорее всего, будет иметь очень простой PATH
набор ...