El comando funciona manualmente en bash pero no en script

El comando funciona manualmente en bash pero no en script

Estamos usando Powershell versión 5.1.18362.1171 en Windows 10.

Si ejecutamos el siguiente comando:

ssh -i id_rsa [email protected] 'exec bash -l';

Y luego ejecute manualmente este comando en la consola bash abierta:

/usr/bin/o3d3xx-reboot

El script funciona correctamente sin errores y al final se reinicia. Sin embargo, si intentamos ejecutar este código automáticamente con el siguiente código, siempre fallará con algún error dentro del script de reinicio:

ssh -i id_rsa [email protected] '/usr/bin/o3d3xx-reboot';

¿Hay alguna forma de ejecutar este script/binario sin entrada manual, de la misma manera que funciona en la primera versión?

Respuesta1

A menos que nos proporcione el archivo de registro que describa por qué no se produjo el reinicio, es difícil adivinar cuál es el problema.

Probablemente puedas solucionar el problema invocando bash en tu ssh, ejecutando el comando y finalizando la conexión ssh inmediatamente, así:

ssh you@yourserver "bash --rcfile <(echo '. ~/.bashrc; /usr/bin/o3d3xx-reboot; exit') -l"

El hecho de que invoque bashwith -lparece indicar que su o3d3xx-rebootejecutable necesita algo de /etc/profile. Es posible que desee buscar allí para encontrar una solución menos complicada.

Respuesta2

ssh -i id_rsa myuser@myip "bash --login -c 'cd /usr/bin/ && o3d3xx-reboot && exit'";

Parece que faltaban variables de entorno, por lo que el script no funcionó. Utilicé el script anterior que carga el entorno de la misma manera que si hubiera iniciado sesión y hubiera escrito los comandos manualmente.

información relacionada