Команда работает вручную в bash, но не в скрипте

Команда работает вручную в bash, но не в скрипте

Мы используем 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'";

Кажется, не хватало переменных окружения, поэтому скрипт не работал. Я использовал скрипт выше, который загружает окружение так же, как если бы я вошел в систему и ввел команды вручную.

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