JAVA_HOME在远程unix机器上的脚本中丢失

时间:2014-10-31 11:59:04

标签: unix batch-file java-home

我在unix机器上有一个脚本(script1.sh),它调用其他unix远程机器中的其他脚本(script2.sh):

ssh user@machine  /opt/.../script2.sh param1 param2

两台机器之间存在信任关系。

如果我运行script2,它可以正常工作,但是如果我运行script1,它会调用script2但是script2的JAVA_HOME会丢失。我知道我可以通过script2中的“set JAVA_HOME”进行修复,但我更喜欢其他解决方案,我不必在脚本1(script2,script3,...)调用的每个脚本中放置JAVA_HOME的特定路径

有什么想法吗?

问候。

1 个答案:

答案 0 :(得分:1)

我没有找到解决方案,所以我尝试了其他方式。另一种方式是Java。

script1调用同一台机器中的Java应用程序。此Java应用程序与其他计算机连接并调用script2并捕获响应。代码是:

 //With Try catchs
 //Create connection
 JSch jSSH = new JSch();
 Session session = jSSH.getSession(user, server, port);
 UserInfo ui = new SessionUser(password, null);//SessionUser implements UserInfo
 session.setUserInfo(ui);
 session.setPassword(password);
 session.connect();

 //Create channel:
 Channel channel = session.openChannel("shell");

 //Configure inputs and outputs of channel:
 OutputStream inputstream_for_the_channel = channel.getOutputStream();
 PrintStream commander = new PrintStream(inputstream_for_the_channel, true);

 channel.setOutputStream(null);
 channel.connect(100);

 //Command to execute
 commander.println("cd /.../scriptFolder; ./script2.sh param1 param2; exit");
 commander.flush();

 //System.out.println(channel.getExitStatus());

 InputStream outputstream_from_the_channel = channel.getInputStream();
 BufferedReader br = new BufferedReader(new InputStreamReader(outputstream_from_the_channel));
        String line = null;

//Catch and print the response with a StringBuilder

//close connection      
channel.disconnect();
session.disconnect();