您的位置:首页 > 运维架构 > Linux

采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令

2012-09-02 14:34 826 查看
采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class JSchDemo {
private String charset = "UTF-8"; // 设置编码格式
private String user; // 用户名
private String passwd; // 登录密码
private String host; // 主机IP
private JSch jsch;
private Session session;

/**
*
* @param user用户名
* @param passwd密码
* @param host主机IP
*/
public JSchDemo(String user, String passwd, String host) {
this.user = user;
this.passwd = passwd;
this.host = host;
}

/**
* 连接到指定的IP
*
* @throws JSchException
*/
public void connect() throws JSchException {
jsch = new JSch();
session = jsch.getSession(user, host, 22);
session.setPassword(passwd);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
}

/**
* 执行相关的命令
*/
public void execCmd() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String command = "";
BufferedReader reader = null;
Channel channel = null;

try {
while ((command = br.readLine()) != null) {
channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);

channel.connect();
InputStream in = channel.getInputStream();
reader = new BufferedReader(new InputStreamReader(in,
Charset.forName(charset)));
String buf = null;
while ((buf = reader.readLine()) != null) {
System.out.println(buf);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSchException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
channel.disconnect();
session.disconnect();
}
}

public static void main(String[] args) throws Exception {
String user = "root";
String passwd = "123456";
String host = "192.168.1.188";

JSchDemo demo = new JSchDemo(user, passwd, host);
demo.connect();
demo.execCmd();
}
}


暂时功能还比较简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: