2

JSch を使用して Java をリモート UNIX サーバーに接続しています。次のステップは、いくつかの内部環境変数を利用するシェル スクリプト (.sh) を実行することです。

シェル スクリプトを端末から直接実行すると正常に動作しますが、JSch を介して Java プログラムから呼び出すと、これらの変数が認識されません。これを回避するにはどうすればよいですか。Java の経験が少ない。サンプルコードの投稿 -

    JSch jsch = new JSch();
    Session session = jsch.getSession("username", "server", 22);
    UserInfo ui = new SftpUserInfo();
    session.setUserInfo(ui);
    session.setPassword("mypass");
    session.connect();

    ChannelExec channelExec = (ChannelExec)session.openChannel("exec");

    InputStream in = channelExec.getInputStream();


    channelExec.setCommand("sh /filePath/myShellScript.sh");
    channelExec.connect();

    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line;

    while ((line = reader.readLine()) != null)
    {
        System.out.println(line);
    }

PS: 環境変数は、ユーザーのルート フォルダー (/home/username/) の「.profile」に設定されます。

ありがとう、

アリア

4

1 に答える 1

0

JSch を使用して、サーバーに保存されている jar を実行します。その jar は、環境変数を変更できるクラス ProcessBuilder を使用します。例えば:

ProcessBuilder pb = new ProcessBuilder("sh /filePath/myShellScript.sh");
Map<String, String> env = pb.environment();
env.put("profile","/home/username/");
于 2015-03-06T05:26:12.900 に答える