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

来源:互联网 发布:java trim 全角空格 编辑:程序博客网 时间:2024/04/19 14:46

采用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; // 主机IPprivate 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();}}


暂时功能还比较简单


原创粉丝点击