java 连接Linux服务器并执行命令

来源:互联网 发布:李天一狱中生活 知乎 编辑:程序博客网 时间:2024/04/28 12:45
package com.zhx.util;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler;import com.sun.deploy.util.StringUtils;import com.sun.org.apache.regexp.internal.RE;import java.io.*;public class RemoteExecuteCommond {    //字符编码    private static String DEFAULTCHART ="utf-8";    private static Connection conn;    private String ip;    private String userName;    private String userPwd;    public String getIp() {        return ip;    }    public void setIp(String ip) {        this.ip = ip;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getUserPwd() {        return userPwd;    }    public void setUserPwd(String userPwd) {        this.userPwd = userPwd;    }    public RemoteExecuteCommond(String ip, String userName, String userPwd) {        this.ip = ip;        this.userName = userName;        this.userPwd = userPwd;    }    public RemoteExecuteCommond() {    }    /**     * 远程登录Linux主机     * @return     * */    public boolean login()    {        boolean flag =false;        conn = new Connection(ip);        try {            conn.connect();            flag=conn.authenticateWithPassword(userName,userPwd);            if(flag)            {                System.out.println("认证成功");            }        }catch (IOException e){            e.printStackTrace();        }        return flag;    }    /**     * 远程执行shell脚本或命令     * */    public String execute(String cmd)    {        String result="";        try{            if(login())            {                Session session  = conn.openSession();                session.execCommand(cmd);                result = processStdout(session.getStdout(),DEFAULTCHART);                if(result.equals("") || result==null){                    result = processStdout(session.getStderr(),DEFAULTCHART);                }                conn.close();                session.close();            }        }catch (Exception e){            e.printStackTrace();        }        return result;    }    public String executeSuccess(String cmd)    {        String result="";        try{            if(login())            {                Session session = conn.openSession();                session.execCommand(cmd);                result = processStdout(session.getStdout(),DEFAULTCHART);                conn.close();                session.close();            }        }catch (Exception e){            e.printStackTrace();        }        return result;    }    /**     * 解析脚本执行返回的结果集     * */    public static String processStdout(InputStream is,String charset)    {        InputStream inputStream = new StreamGobbler(is);        StringBuffer sb = new StringBuffer();        try{            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,charset));            String line =null;            while ((line = br.readLine()) !=null){                sb.append(line +"\n");            }        }catch (UnsupportedEncodingException e){            e.printStackTrace();        }catch (IOException e){            e.printStackTrace();        }        return sb.toString();    }    public static void main(String[]args)    {        RemoteExecuteCommond rec = new RemoteExecuteCommond("192.168.0.168","root","root");        try {            if (rec.login()) {                System.out.println("-------- 启动连接--------");                Session session = conn.openSession();                session.execCommand("cd /home/ubuntu/Desktop/music_rec/user_sim");                String result = processStdout(session.getStdout(),DEFAULTCHART);                if(result.equals("")|| result==null){                    System.out.println("--------出错啦--------");                    result=processStdout(session.getStderr(),DEFAULTCHART);                }                System.out.println(result);                session.close();            }        }catch (Exception e){            e.printStackTrace();        }    }}
阅读全文
0 0
原创粉丝点击