java 调用远程服务器shell脚本

winston952 发布于 07/12 18:17
阅读 507
收藏 4

关于使用java调用远程服务器shell脚本的问题:

方式1、使用Apache的commons-exec包执行。但是貌似这个只能执行本地的shell脚本。没看到可以调用远程的。 

文档:http://commons.apache.org/proper/commons-exec/tutorial.html

             String line = String.format("sh %s %s %s %s", batchShellPath,date);
	         log.info("trying to execute command : {}", line);
	         CommandLine cmdLine = CommandLine.parse(line);
	         DefaultExecutor executor = new DefaultExecutor();
	         
	         int exitValue = executor.execute(cmdLine);

 方式2、使用ganymed-ssh2-build210-hudson-1这个包里执行。可以执行远程服务器的但是这个好像没法获取脚本执行的退出值。(方式1里面就可以获取到程序的退出值、如代码中的:exitValue)

                Session session = conn.openSession(); 
				session.execCommand(cmds);
				
				in = session.getStdout();
				System.out.println("ExitStatus::"+session.getExitStatus());
				System.out.println("ExitSignal::"+session.getExitSignal());
				
				result = IOUtils.toString(in,  this.charset);

 

哪位大佬知道的话  麻烦指点一下。。

加载中
0
r
raozhiyong
java有一套专门实现这个调用的工具,叫jsch.jar,可以了解下,我之前使用它实现过最原始的本地一键发布上线功能
w
winston952
好的 我去看看。谢谢
0
r
raozhiyong
java有一套专门实现这个调用的工具,叫jsch.jar,可以了解下,我之前使用它实现过最原始的本地一键发布上线功能��
小山羊
小山羊
学习到了
小山羊
小山羊
get到了
0
不日小鸡

直接取InputStream不就完了么

 if(conn.isAuthenticationComplete())
             {
                 Session sess = conn.openSession();
                 sess.execCommand("hostname");
                  InputStream stdout = new StreamGobbler(sess.getStdout());
                   InputStreamReader isr = new InputStreamReader(stdout);
                   BufferedReader br = new BufferedReader(isr);
                   while (true) {
                           String line = br.readLine();    
                           if (line == null)
                                   break;
                          System.out.println(line);
                   }
                   br.close();isr.close();stdout.close();
             }

w
winston952
这个是输出到控制台的内容
返回顶部
顶部