1

この bash スクリプトで C プログラムを実行すると、エラーが返されます。

ssh -n -f *.*.*.* "cd /home/sth/remote && echo "$1" && det=$(./ossec-rootcheck)">/home/sthh/res

エラー:

 ./ossec-rootcheck: No such file or directory

リモート マシンに SSH で接続し、その上でプログラムを実行したいと考えています。ご覧のように編集すると機能するため、このファイルがそのパスにあることはわかっています。

ssh -n -f *.*.*.* "cd /home/sth/remote && echo "$1" && ./ossec-rootcheck">/home/sthh/res

そして、echo $1それが正しいことがわかりますcd /home/sth/remote。しかし、そのプログラムの戻り値を変数に格納したい、たとえばdet.

4

2 に答える 2

1

リモート コードのリターン コードまたは終了コードを取得するには、次のようにします。

ssh -n -f *.*.*.* "cd /***/***/remote && echo \"$1\"; ./ossec-rootcheck; echo \$?">/home/ossl7/res

エラーもキャプチャするには:

ssh -n -f *.*.*.* "exec 2>&1; cd /***/***/remote && echo \"$1\"; ./ossec-rootcheck; echo \$?">/home/ossl7/res

&& echo \"$1\"また、すでに機能していることがわかった場合は、おそらく省略する必要があります。そして、そのために一重引用符を使用することができます:

ssh -n -f *.*.*.* 'cd /***/***/remote; ./ossec-rootcheck; echo $?' >/home/ossl7/res

または

ssh -n -f *.*.*.* 'exec 2>&1; cd /***/***/remote; ./ossec-rootcheck; echo $?' >/home/ossl7/res
于 2013-09-17T13:10:38.557 に答える