Мы используем Powershell версии 5.1.18362.1171 на Windows 10.
Если мы выполним следующую команду:
ssh -i id_rsa [email protected] 'exec bash -l';
А затем вручную выполните эту команду в открывшейся консоли bash:
/usr/bin/o3d3xx-reboot
Скрипт работает корректно, без ошибок и в конце перезагружается. Однако, если мы попытаемся запустить этот код автоматически с кодом ниже, он всегда будет падать в какой-то ошибке внутри скрипта перезагрузки:
ssh -i id_rsa [email protected] '/usr/bin/o3d3xx-reboot';
Есть ли способ запустить этот скрипт/бинарный файл без ручного ввода, так же, как это работало в первой версии?
решение1
Пока вы не предоставите нам файл журнала, описывающий, почему перезагрузка не произошла, трудно будет предположить, в чем проблема.
Вероятно, вы можете обойти эту проблему, вызвав bash в своем ssh, выполнив команду и немедленно завершив ssh-соединение, например так:
ssh you@yourserver "bash --rcfile <(echo '. ~/.bashrc; /usr/bin/o3d3xx-reboot; exit') -l"
Тот факт, что вы вызываете bash
с помощью, -l
похоже, указывает на то, что вашему o3d3xx-reboot
исполняемому файлу нужно что-то из /etc/profile
. Вы можете заглянуть туда, чтобы сделать менее хакерское решение.
решение2
ssh -i id_rsa myuser@myip "bash --login -c 'cd /usr/bin/ && o3d3xx-reboot && exit'";
Кажется, не хватало переменных окружения, поэтому скрипт не работал. Я использовал скрипт выше, который загружает окружение так же, как если бы я вошел в систему и ввел команды вручную.