ch.ethz.ssh2.StreamGobbler Java Examples

The following examples show how to use ch.ethz.ssh2.StreamGobbler. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PooledRemoteCommandExecutor.java    From wecube-platform with Apache License 2.0 6 votes vote down vote up
@Override
public String call() throws Exception {
    try {
        String shellCmd = "sh -l -c '" + cmd.getCommand() + "'";
        getSession().execCommand(shellCmd);
        getSession().waitForCondition(ChannelCondition.TIMEOUT, 1000L * 60 * 5);
    } catch (Exception e) {
        LOGGER.error("errors while exec command", e);
        throw e;
    }

    InputStream stdout = new StreamGobbler(getSession().getStdout());
    @SuppressWarnings("resource")
    BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
    StringBuilder result = new StringBuilder();
    String line = null;
    while ((line = br.readLine()) != null) {
        result.append(line);
    }

    if (getSession().getExitStatus() != null && getSession().getExitStatus() != 0) {
        throw new Exception("exec failed with code " + getSession().getExitStatus());
    }
    return result.toString();
}
 
Example #2
Source File: SshUtil.java    From dk-fitting with Apache License 2.0 6 votes vote down vote up
public static String exe(String cmd, String hostIp, String hostName,
                             String hostPassword) throws Exception {
        Connection conn = createConn(hostIp, hostName, hostPassword);
        Session sess = conn.openSession();
        sess.requestPTY("vt100", 80, 24, 640, 480, null);
        sess.execCommand(cmd);
        InputStream stdout = new StreamGobbler(sess.getStdout());
        StringBuilder sb = new StringBuilder();
        BufferedReader stdoutReader = new BufferedReader(
                new InputStreamReader(stdout));

        System.out.println("Here is the output from stdout:");
        while (true) {
            String line = stdoutReader.readLine();
            if (line == null)
                break;
            System.out.println(line);
            sb.append(line + "\n");
        }

//      System.out.println("ExitCode: " + sess.getExitStatus());
//		System.out.println("sb.toString() = " + sb.toString());
        sess.close();
        conn.close();
        return sb.toString();
    }
 
Example #3
Source File: SUTTest.java    From bestconf with Apache License 2.0 6 votes vote down vote up
@Override
public void startTest(){
	Session session=null;
	try {
		getConnection();
		if(connection==null)
			throw new IOException("Unable to connect the server!");
	    session = connection.openSession();
		session.execCommand(shellofstartTest);
		System.out.println("Here is some information about the remote host:");
		InputStream stderr = new StreamGobbler(session.getStderr());
		BufferedReader br = new BufferedReader(new InputStreamReader(stderr));
		InputStream stdout = new StreamGobbler(session.getStdout());
		BufferedReader stdbr = new BufferedReader(new InputStreamReader(stdout));
		System.out.println("Test had been started successfully!");
	} catch (IOException e) {
		e.printStackTrace();
		System.exit(-1);
	}finally{
		if(session != null)
    		   session.close();
    	   closeConnection();
	}
}
 
Example #4
Source File: SshUtil.java    From dk-fitting with Apache License 2.0 5 votes vote down vote up
public static String getHomePath(String cmd, String hostIp, String hostName,
                                     String hostPassword, String hadoopName) throws Exception {
        Connection conn = createConn(hostIp, hostName, hostPassword);
        Session sess = conn.openSession();
        sess.requestPTY("vt100", 80, 24, 640, 480, null);
        sess.execCommand(cmd);
        InputStream stdout = new StreamGobbler(sess.getStdout());
        StringBuilder sb = new StringBuilder();
        BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));

//		System.out.println("Here is the output from stdout:");
        String hadoopNamePath = "";
        while (true) {
            String line = stdoutReader.readLine();
//			System.out.println( trim);
            if (line != null && line.trim().startsWith("export " + hadoopName)) {
                String substring = line.substring(line.lastIndexOf("=") + 1);
                hadoopNamePath = substring;
            }
            if (line == null)
                break;
        }

        //System.out.println("ExitCode: " + sess.getExitStatus());
//		System.out.println("sb.toString() = " + sb.toString());
        sess.close();
        conn.close();
        return hadoopNamePath;
    }
 
Example #5
Source File: Tools.java    From fastdfs-zyc with GNU General Public License v2.0 5 votes vote down vote up
public static List<String> exeRemoteConsole(String hostname, String username, String password, String cmd) {
        List<String> result = new ArrayList<String>();
        //指明连接主机的IP地址
        Connection conn = new Connection(hostname);
        Session ssh = null;
        try {
            //连接到主机
            conn.connect();
            //使用用户名和密码校验
            boolean isconn = conn.authenticateWithPassword(username, password);
            if (!isconn) {
                logger.error("用户名称或者是密码不正确");
            } else {
                logger.info("已经连接OK");
                ssh = conn.openSession();
                //使用多个命令用分号隔开
//              ssh.execCommand("pwd;cd /tmp;mkdir shb;ls;ps -ef|grep weblogic");
                ssh.execCommand(cmd);
                //只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
//              ssh.execCommand("mkdir hb");
                //将屏幕上的文字全部打印出来
                InputStream is = new StreamGobbler(ssh.getStdout());
                BufferedReader brs = new BufferedReader(new InputStreamReader(is));
                for (String line = brs.readLine(); line != null; line = brs.readLine()) {
                    result.add(line);
                }
            }
            //连接的Session和Connection对象都需要关闭
            if (ssh != null) {
                ssh.close();
            }
            conn.close();
        } catch (IOException e) {
            logger.error("", e);
        }
        return result;
    }
 
Example #6
Source File: MysqlUtil.java    From newblog with Apache License 2.0 4 votes vote down vote up
/**
     * export database;
     */
    public void exportDataBase() {
        logger.info("start backup database");
        String username = Config.getProperty("jdbc.username_dev");
        String password = Config.getProperty("jdbc.password_dev");
        String database = Config.getProperty("jdbc.database");
        String host = Config.getProperty("jdbc.host_dev");
        String os = System.getProperty("os.name");
        String file_path = null;
//        if (os.toLowerCase().startsWith("win")) {       //根据系统类型
//            file_path = System.getProperty("user.dir") + "\\sql\\";
//        } else {
//            file_path = System.getProperty("user.dir") + "/sql/";//保存的路径
//        }
        file_path = System.getProperty("myblog.path") + "sql";
        String file_name = "/myblog" + DateTime.now().toString("yyyyMMddHHmmss") + ".sql";
        String file = file_path + file_name;
        logger.info("file_path and file_name: " + file);
        //server
        String s_host = Config.getProperty("server.host");
        Integer s_port = Config.getIntProperty("server.port");
        String s_username = Config.getProperty("server.username");
        String s_password = Config.getProperty("server.password");
        try {
            StringBuffer sb = new StringBuffer();
            sb.append(Common.MYSQL_DUMP).append(" -u ").append(username).append(" -p").append(password).append(" -h ").append(host).append(" ").append(database).append(" >").append(file);
            String sql = sb.toString();
            logger.info(sql);
            //connect to server
            Connection connection = new Connection(s_host, s_port);
            connection.connect();
            boolean isAuth = connection.authenticateWithPassword(s_username, s_password);
            if (!isAuth) {
                logger.error("server login error");
            }
            Session session = connection.openSession();
            session.execCommand(sql);
            InputStream stdout = new StreamGobbler(session.getStdout());
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
            while (true) {
                String line = br.readLine();
                if (line == null)
                    break;
                System.out.println(line);
            }
            session.close();
            connection.close();
            stdout.close();
            br.close();
            logger.info("backup finish");
            logger.info(sb.toString());
        } catch (Exception e) {
            logger.error("error", e);
        }
    }
 
Example #7
Source File: CtrCommond.java    From myrover with Apache License 2.0 4 votes vote down vote up
/**
 * 远程执行命令
 * @param ip
 * @param user
 * @param pwd
 * @param cmd
 * @return
 */
public static String doCommond(Connection conn,String cmd){
	String result = "";
       try {
           if(conn==null){
           	System.out.println("请先链接服务器");
           }else{
               Session sess = conn.openSession();
               sess.execCommand(cmd);
               InputStream stdout = new StreamGobbler(sess.getStdout());
   			BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
   			while(true){
   				String line = stdoutReader.readLine();
   				if (line == null)
   					break;
   				result+=line+StaticKeys.SPLIT_BR;
   			}
   			//连接的Session和Connection对象都需要关闭 
   			stdoutReader.close();
               sess.close();
           }
       } catch (IOException e) {
       	System.out.println("执行linux命令错误:"+e.toString());
       }
       if(result.endsWith(StaticKeys.SPLIT_BR)){
       	result =  result.substring(0, result.length()-StaticKeys.SPLIT_BR.length());
       }
       
       if(!StringUtils.isEmpty(result)){
       	if(cmd.contains("DEV")||cmd.contains("iostat")){
       		if(result.contains("</br></br>")){
       			result = result.substring(result.lastIndexOf("</br></br>")+10);
       		}
           }
       	if(cmd.contains("mpstat")){
       		if(result.contains("</br></br>")){
       			result = result.substring(result.lastIndexOf("</br></br>")+10);
       			int s = result.indexOf("</br>")+5;
       			s = result.indexOf("</br>",s);
       			result = result.substring(0,s);
       		}
           }
       }
       return result;
}