2

Java-ganymed プラグイン (JSch でも試しました) を使用して Unix リモート サーバーに接続するための Java コードを作成しています。

    Connection conn = new Connection("host");
    conn.connect();
    boolean testAuth = conn.authenticateWithPassword("user", "pwd");
    Session sess = conn.openSession();
    sess.execCommand(Commands); //"Commands" is a string variable with "sh" command.

そのログインのいくつかの環境変数を使用するリモート サーバーにあるシェル スクリプトを実行する必要があります。ログインは成功し、スクリプトは実行されますが、完了しません。Putty などの対話型ログイン シェル (「env」コマンドを使用) の実行と比較して、環境変数が完全に読み込まれていないことを確認しました。

スクリプトの前に /etc/profile、.bashrc などを実行してみました。スクリプトは 1 ステップ進みますが、再び停止します。したがって、すべてではなく、いくつかの環境変数がロードされたことは明らかです。Java 非対話型セッション用にすべての環境変数が確実にロードされるようにするための回避策が必要です。リモート サーバーのルート権限がありません。

ありがとう、アリア

4

1 に答える 1

0

/etc/profileとを実行しようとする代わりに、.bashrcそれらをソース スクリプトとして使用してみてください。これをスクリプトまたはコマンドの一部として実行します。

. .bashrc
. /etc/profile
. /etc/environment

またはその他の関連する構成スクリプト (ファイルの先頭にあるドット広告が重要です)。

于 2013-07-24T11:10:32.793 に答える