我想写一个bash脚本,我是一个新手。当使用bsh脚本来ssh远程机器时找不到命令
一切工作,一些特定的命令是给我的错误
./start_components1.sh: line 17: cmd1: command not found
的东西旁边,他们是我的机器的一些具体的命令,我认为他们已经在某种程度上涉及到的事情,当我SSH,通过bash脚本,进入机器的环境没有加载。我可能是错的。
无论如何,如果我通常从终端ssh进入我的机器然后执行命令它完美地工作,会发生什么。
当我尝试通过bash脚本做同样的事情时,它告诉我找不到命令。
我GOOGLE了很多,尝试了不同的东西。没有工作。
这里我的剧本,如果它可以帮助:
#!/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
我看到我想要启动的组件已启动,我得到了一些输出等等。当我启动了start_components2.sh
文件,它应该推出/opt/openrobots/bin/pom-ros
我没有看到任何输出,我相信该组件未启动,因为我没有任何效果:(
感谢事先没有发现通常意味着
我猜'cmd1'不在$ PATH中,当你运行一个没有tty的会话时,这可能是ssh正在做的事情。您是否尝试在'./start_components$ {HOSTNAME} .sh'中放入'cmd1'的完整路径? –
嗨@PauloScardine我现在尝试,它给了我另一个错误: '权限被拒绝。 通常我不会使用'sudo ./start_components2.sh'为什么它告诉我我不被允许? 非常感谢支持。 – kalmanIsAGameChanger
将'set -x; export PS4 ='$ LINENO>''添加为'。/ start_components2.sh'的第二行。然后您可以看到每行的执行情况。祝你好运。 – shellter