2017-08-25 115 views
3

我想写一个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我没有看到任何输出,我相信该组件未启动,因为我没有任何效果:(

感谢事先没有发现通常意味着

+1

我猜'cmd1'不在$ PATH中,当你运行一个没有tty的会话时,这可能是ssh正在做的事情。您是否尝试在'./start_components$ {HOSTNAME} .sh'中放入'cmd1'的完整路径? –

+0

嗨@PauloScardine我现在尝试,它给了我另一个错误: '权限被拒绝。 通常我不会使用'sudo ./start_components2.sh'为什么它告诉我我不被允许? 非常感谢支持。 – kalmanIsAGameChanger

+1

将'set -x; export PS4 ='$ LINENO>''添加为'。/ start_components2.sh'的第二行。然后您可以看到每行的执行情况。祝你好运。 – shellter

回答

-1

命令, 。它不能找到它在当前目录时使用的执行点

试图把一个完整的脚本路径,喜欢的东西:

ssh -l ${USERNAME} "robot${HOSTNAME}" "/home/${USERNAME}/start_components${HOSTNAME}.sh; ls" 

然而,这只会工作时脚本start_componets将位于$ {USERNAME}变量后面的用户主目录

+0

错误消息是关于'cmd1' ,而不是'start_components1.sh'。 –

相关问题