gpt4 book ai didi

linux - 使用 bash 脚本到 ssh 远程机器时找不到命令

转载 作者:IT王子 更新时间:2023-10-29 00:46:22 25 4
gpt4 key购买 nike

我正在尝试编写一个 bash 脚本,但我是这方面的新手。

除了某些特定命令给我的错误之外,一切正常

./start_components1.sh: line 17: cmd1: command not found

它们是我机器的一些特定命令,我认为它们与当我通过 bash 脚本 ssh 进入机器时未加载环境的事情有某种关系。我可能是错的。

无论如何,如果我从终端正常 ssh 进入我的机器,然后执行命令,它会完美地工作。

当我尝试通过 bash 脚本执行相同操作时,它告诉我找不到命令。

我在谷歌上搜索了很多并尝试了不同的东西。没有任何效果。

这里是我的脚本,如果它可以帮助:

#!/bin/bash

USERNAME=odroid

while getopts r:d:p:f: option
do
case "${option}"
in
r) ROBOT=${OPTARG};;
esac
done

for HOSTNAME in ${ROBOT}; do
ssh -l ${USERNAME} "robot${HOSTNAME}" "./start_components${HOSTNAME}.sh; ls"
done

编辑:我认为它在按照@PauloScardine 的提示进行操作后,我还意识到我的文件的权限未设置为可执行,所以我sudo chmod +x fileToExecute我认为这解决了我的问题但是:它仍然无法正常工作。该命令执行时没有任何错误(看起来),但它们并未真正执行。示例:如果我在我的机器上进入 ssh(没有 bash 脚本)并执行 /opt/openrobots/bin/pom-ros 我看到我想要启动的组件已启动,我得到了一些输出等。当我启动应该启动 /opt/openrobots/bin/pom-rosstart_components2.sh 文件时,我没有看到任何输出,而且我确定该组件不是发射是因为我没有效果:(

提前致谢

最佳答案

ssh 命令通常在 $PATH 变量中找到,这就是为什么您可以从任何地方在 STDIN 上键入“ssh user@host”。但在脚本内部,环境变量可能不可用。

您可以通过以下方式解决此问题/bin/ssh user@host

根据您的 Linux 风格,您可能需要更改 ssh 命令的绝对路径。在任何 shell 中,您都可以键入 which ssh 来查找此路径。

关于linux - 使用 bash 脚本到 ssh 远程机器时找不到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45882979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com