怎么用java代码调用远程Linux上的shell脚本

求实例代码... 求实例代码 展开
 我来答
性情中人的文库
推荐于2016-11-24 · TA获得超过481个赞
知道小有建树答主
回答量:219
采纳率:90%
帮助的人:152万
展开全部
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();
}
}
小童鞋_成er
推荐于2016-07-18 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22879
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
public class Dy{
    public static void main(String[] args){
        Runtime.getRuntime().exec("命令");
    }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zfx8827
2015-08-08 · 超过17用户采纳过TA的回答
知道答主
回答量:150
采纳率:50%
帮助的人:41.2万
展开全部
java 远程调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式