SSH远程连接执行shell脚本

来源:互联网 发布:linux卸载jenkins 编辑:程序博客网 时间:2024/05/13 02:19

有时候项目会要求远程登录到主机进行脚本执行,本来以为通过跳板机连接到主机的,使用SSH会有问题,

事实证明,使用SSH可以实现直连

import java.io.InputStream;import java.nio.charset.Charset;import ch.ethz.ssh2.ChannelCondition;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.ConnectionInfo;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;public class testSSH {private String ip = "****";//连接的ip  private String user ="***";//登录名private String password = "";//登录密码private static final int TIME_OUT = 1000 * 5 * 60;//连接超时设置private String charset = Charset.defaultCharset().toString();public boolean testShell(){ boolean flag = false;InputStream stdOut = null;InputStream stdErr = null;String outStr = "";String outErr = "";String shell = "***";//需要执行shell命令 try {            System.out.println(ip);            Connection con = new Connection(ip);            System.out.println("连接打开");            ConnectionInfo info = con.connect();            boolean result = con.authenticateWithPassword(user, password);            System.out.println("登陆成功");            Session session = con.openSession();            System.out.println("打开会话");            session.execCommand(shell);            System.out.println("成功");                        stdOut = new StreamGobbler(session.getStdout());//获取脚本执行的返回值                    outStr = processStream(stdOut, charset);//                                    stdErr = new StreamGobbler(session.getStderr());//处理返回信息                    outErr = processStream(stdErr, charset);                                    session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);                                System.out.println("outStr=" + outStr);                System.out.println("outErr=" + outErr);            flag = true;        } catch (Exception ex) {            System.out.println(ex.getLocalizedMessage());        }      return flag;}  private String processStream(InputStream in, String charset) throws Exception {        byte[] buf = new byte[1024];        StringBuilder sb = new StringBuilder();        while (in.read(buf) != -1) {            sb.append(new String(buf, charset));        }        return sb.toString();    }public static void main(String args[]){testSSH test = new testSSH();test.testShell();}}

0 0
原创粉丝点击