0

コマンドを実行する画面セッションをsshで開始するために、今日は多くのことを試しました。目標は、リモート マシンでコマンドを実行し、出力を確認して、後者を切り離して再接続できるようにすることです。画面セッションを切り離して閉じることを除いて、対話なしでスクリプト内から実行したいと考えています。これまでのところ、満足のいく解決策はありません。

ssh -t ${host} "\
    source ~/.bashrc; \
    echo \"done.\"; \
    cd \"$exedir\"; \
    if [ \$? -ne 0 ]; then \
        echo \"could not cd into directory\"; \
        exit 1; \
    fi; \
    echo \"executing remotexe.sh ...\"; \
    screen -S "remotexe" -t "remotexe" -R "nice -n$prio ./remotexe.sh ${exeparams[@]}";"

--私が遭遇する問題のいくつかは、コマンドを screen/ssh/bash に渡す奇妙な方法に関連しており、引数とオプションに干渉します (引数付きのコマンドとして後続するものを解釈するために使用しない理由がよくわかりません)。上記のバージョンはほぼ動作します。残りの問題は、remotexe.sh のコマンド (特に make) が .xml からのエクスポートと定義を明らかに見逃していること.bashrcです。これが、を含めようとした理由ですsource ~/.bashrc。同様のコマンドまたは明示的なエクスポートを remotexe.sh に追加しようとしましたが、/bin/sh によって実行されたかのように動作します。従来の ssh ログインを行うと、remotexe.sh スクリプトをエラーなしですぐに実行できます。にも追加shell -$SHELLしてみました.screenrc

このソリューションのどこが間違っていますか? どうすれば修正できますか?

4

1 に答える 1

0

私はあなたのコードをまったくテストしておらず、これの正気を保証するつもりはありませんが、あなたは間違いなく引用エラーがあります。試す:

ssh -t ${host} "
    source ~/.bashrc;
    echo done.;
    cd \"$exedir\" || exit 1;
    echo executing remotexe.sh ...;
    screen -S remotexe -t remotexe -R nice -n$prio ./remotexe.sh ${exeparams[@]};"
于 2012-11-24T16:43:02.683 に答える