繁体   English   中英

JSch使用Unix远程服务器环境变量

[英]JSch to use Unix Remote Server Environment Variables

我正在使用JSch将Java连接到远程UNIX服务器。 下一步将是运行一个使用一些内部环境变量的shell脚本(.sh)。

在直接从终端执行Shell脚本时,效果很好,但是通过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”

谢谢,

艾莉亚

我使用JSch执行存储在服务器上的jar。 该jar使用允许修改环境变量的类ProcessBuilder。 例如:

ProcessBuilder pb = new ProcessBuilder("sh /filePath/myShellScript.sh");
Map<String, String> env = pb.environment();
env.put("profile","/home/username/");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM