命令在 bash 中手动有效,但在脚本中无效

命令在 bash 中手动有效,但在脚本中无效

我们在 Windows 10 上使用 Powershell 版本 5.1.18362.1171。

如果我们运行以下命令:

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

除非您向我们提供日志文件来描述重启未发生的原因,否则很难猜测问题是什么。

您可以通过在 ssh 中调用 bash、执行命令并立即终止 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'";

似乎缺少环境变量,因此脚本不起作用。我使用了上面的脚本,它以与我登录并手动输入命令相同的方式加载环境。

相关内容