我正在使用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”
谢谢,
的Arya
答案 0 :(得分:0)
我使用JSch执行存储在我服务器上的jar。该jar使用允许修改环境变量的ProcessBuilder类。例如:
ProcessBuilder pb = new ProcessBuilder("sh /filePath/myShellScript.sh");
Map<String, String> env = pb.environment();
env.put("profile","/home/username/");