2017-08-25 9 views
3

私はbashスクリプトを作成しようとしています。bashスクリプトを使用してリモートマシンにsshを実行するときにコマンドが見つかりません

すべては彼らが私のマシンのいくつかの特定のコマンドであり、私は、彼らはを通じて、私は、SSH事に何とか関連していると思う

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

私にエラーを与えているいくつかの特定のコマンド事の横に取り組んでいますbashスクリプトをマシンにロードします。私は間違っている可能性がある。

とにかく、端末から私のマシンに普通に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 

EDIT:私はそれが私がまた私のファイルのアクセス権がそのように実行可能ファイルに設定されていなかったことに気づき@PauloScardineことでヒントに従った後働いていたと思いました私sudo chmod +x fileToExecute 私はこれが私の問題を解決したと思ったが、: それはまだ動作していません。コマンドはエラーなしで実行されますが、実際には実行されません。例:私がマシン上でssh(bashスクリプトなし)を実行した場合、私は/opt/openrobots/bin/pom-ros私が起動したいコンポーネントが起動していることを確認します。私は/opt/openrobots/bin/pom-rosを起動する必要がありstart_components2.shファイルを起動すると、私は何も出力が表示されていないと私は何の効果もありませんので、コンポーネントが起動されていないことを確信して:(見つからない事前に

おかげ

+1

おそらくsshがやっているttyなしでセッションを実行すると 'cmd1'は' $ PATH'にないと思います。 './start_components$ {HOSTNAME} .sh'に' cmd1'への完全なパスを入れようとしましたか? –

+0

こんにちは@PauloScardine私は今試してみましたが、別のエラーが表示されます: 'permission denied'。 私は 'sudo。/ start_components2.sh'を使わないので、なぜ私に許可されていないのですか? サポートをいただき、ありがとうございます。 – kalmanIsAGameChanger

+1

'set -x; export PS4 = '$ LINENO>''を '。/ start_components2.sh'の2行目に追加してください。各行に対して何が実行されているかを確認することができます。がんばろう。 – shellter

答えて

-1

コマンドは通常意味し、あなたが実行するためのドットを使用して、それが現在のディレクトリにそれを見つけることができない

は、スクリプトへのフルパスを配置しようとするような何か:。。とき

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

は、しかし、これはのみ動作しますスクリプトstart_componetsは$ {USERNAME}変数のユーザのホームディレクトリにあります

+0

エラーメッセージは' cmd1'です。 'start_components1.sh'ではなく、 –

関連する問題