[英]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.