欢迎使用CSDN-markdown编辑器
来源:互联网 发布:苹果软件开发教程 编辑:程序博客网 时间:2024/06/15 21:08
package com.system.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.mesosphere.marathon.client.utils.ModelUtils;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class RemoteShellExecutor {
//private static Class MesosaAency;private Connection conn;/** 远程机器IP */private String ipAddr; private String charset = Charset.defaultCharset().toString(); /** 用户名 */private String userName; /** 密码 */private String password; /** * 构造函数 * @param ipAddr * @param userName * @param password * @param charset */public RemoteShellExecutor(String ipAddr, String userName, String password, String charset) { this.ipAddr = ipAddr; this.userName = userName; this.password = password; if (charset != null) { this.charset = charset; } } /** * 登录 * @return * @throws IOException */public boolean login() throws IOException { conn = new Connection(ipAddr); conn.connect(); // 连接 return conn.authenticateWithPassword(userName, password); // 认证 } /** * 执行脚本 * @param cmds * @return * @throws Exception */public String executeSuccess(String cmds) throws Exception { InputStream in = null; String result = ""; try { if (this.login()) { Session session = conn.openSession(); // 打开一个会话 session.execCommand(cmds); in = session.getStdout(); result = this.processStream(in, this.charset); in.close(); conn.close(); session.close(); }else { throw new Exception("登录远程机器失败" + ipAddr); // 自定义异常类 实现略 } } catch (IOException e1) { e1.printStackTrace(); } return result; } /** * 执行脚本 * @param cmds * @return * @throws Exception */public void execute(String cmds) throws Exception { try { if (this.login()) { Session session = conn.openSession(); // 打开一个会话 session.execCommand(cmds); }else { throw new Exception("登录远程机器失败" + ipAddr); // 自定义异常类 实现略 } } catch (IOException e1) { e1.printStackTrace(); }} /** * * @param in * @param charset * @return */public String processStream(InputStream in, String charset) { InputStream stdout = new StreamGobbler(in); StringBuffer buffer = new StringBuffer();; try { BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset)); String line=null; while((line=br.readLine()) != null){ buffer.append(line+"\n"); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return buffer.toString(); } public static void main(String args[]) throws Exception { RemoteShellExecutor executor = new RemoteShellExecutor("192.168.163.130", "root", "root","utf-8"); //String ports = executor.executeSuccess("bash gottyPort.sh mesos-fceadadf-b529-4db0-9046-1a02012ebbef-S0.07013d60-26ca-4645-90ad-ef058f9240de");}public String getIpAddr() { return ipAddr;}public void setIpAddr(String ipAddr) { this.ipAddr = ipAddr;}public String getUserName() { return userName;}public void setUserName(String userName) { this.userName = userName;}public String getPassword() { return password;}public void setPassword(String password) { this.password = password;}
}
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- android 隐藏标题栏
- 探索性数据分析(EDA)
- java 内置对象
- STEPcode二次开发入门填坑
- Activity启动模式(集百家之长)
- 欢迎使用CSDN-markdown编辑器
- mybatis的基本使用
- Java之IO流(二)
- 【LeetCode】linked-list-cycle-ii
- 题目1168:字符串的查找删除
- 关于C++、C#实现EXCEL数据库批量导入数据库万行以上数据效率问题
- 对矩阵的认识
- 上传代码到服务器
- FreeMarker如何取得一个集合中的某一个值