怎么用java代码调用远程Linux上的shell脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用java代码调用远程Linux上的shell脚本相关的知识,希望对你有一定的参考价值。
求实例代码
package org.shirdrn.shell;import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
/**
* 远程Shell脚本执行工具
*
* @author Administrator
*/
public class RemoteShellTool
private Connection conn;
private String ipAddr;
private String charset = Charset.defaultCharset().toString();
private String userName;
private String password;
public RemoteShellTool(String ipAddr, String userName, String password, String charset)
this.ipAddr = ipAddr;
this.userName = userName;
this.password = password;
if(charset != null)
this.charset = charset;
/**
* 登录远程Linux主机
*
* @return
* @throws IOException
*/
public boolean login() throws IOException
conn = new Connection(ipAddr);
conn.connect(); // 连接
return conn.authenticateWithPassword(userName, password); // 认证
/**
* 执行Shell脚本或命令
*
* @param cmds 命令行序列
* @return
*/
public String exec(String cmds)
InputStream in = null;
String result = "";
try
if (this.login())
Session session = conn.openSession(); // 打开一个会话
session.execCommand(cmds);
in = session.getStdout();
result = this.processStdout(in, this.charset);
conn.close();
catch (IOException e1)
e1.printStackTrace();
return result;
/**
* 解析流获取字符串信息
*
* @param in 输入流对象
* @param charset 字符集
* @return
*/
public String processStdout(InputStream in, String charset)
byte[] buf = new byte[1024];
StringBuffer sb = new StringBuffer();
try
while (in.read(buf) != -1)
sb.append(new String(buf, charset));
catch (IOException e)
e.printStackTrace();
return sb.toString();
参考技术A public class Dy
public static void main(String[] args)
Runtime.getRuntime().exec("命令");
本回答被提问者采纳 参考技术B java 远程调用
java 调用 shell 脚本
项目需求做一个视频传输,需要一个例子java调用shell脚本
参考技术A 在写程序时,有时需要在java程序中调用shell脚本,可以通过Runtime的exec方法来调用shell程序,运行脚本。每个Java 应用程序都有一个Runtime 类实例,使应用程序能够与其运行的环境相连接。通过Runtime对象可以返回运行环境的情况,包括CPU数,虚拟机内存大小等,并能够通过exec方法调用执行命令。可以通过getRuntime 方法获取当前Runtime实例。 public boolean ExeShell() Runtime rt = Runtime.getRuntime(); try Process p = rt.exec(checkShellName); if(p.waitFor() != 0) return false; catch (IOException e) SysLog.error("没有找到检测脚本"); return false; catch (InterruptedException e) e.printStackTrace(); return false; return true; 其中p.waitFor()语句用来等待子进程结束,其返回值为进程结束退出码。以上是关于怎么用java代码调用远程Linux上的shell脚本的主要内容,如果未能解决你的问题,请参考以下文章
linux怎么远程执行另一台linux机器上的shell文件?