import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import lombok.extern.slf4j.Slf4j; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* 登录ssh
* @param ip
* @param username
* @param password
* @return
*/
public static Connection login(String ip, String username, String password) {
boolean flag = false;
Connection connection = null;
try {
connection = new Connection(ip);
connection.connect();// 连接
flag = connection.authenticateWithPassword(username, password);// 认证
if (flag) {
System.out.println("================" + ip + " 登录成功==================");
return connection;
}
} catch (Exception e) {
log.info("=========登录失败=========" + e);
if (connection != null)
connection.close();
connection = null;
}
return connection;
} /**
* 远程执行shll脚本或者命令
*
* @param cmd 即将执行的命令
* @return 命令执行完后返回的结果值
*/
public static String execmd(Connection connection, String cmd) {
String result = "";
try {
if (connection != null) {
Session session = connection.openSession();// 打开一个会话
session.execCommand(cmd);// 执行命令
result = processStdout(session.getStdout());
System.out.println(result);
// 如果为得到标准输出为空,说明脚本执行出错了
/* if (!StringUtils.isEmpty(result)) {
System.out.println("得到标准输出为空,链接conn:" + connection + ",执行的命令:" + cmd);
result = processStdout(session.getStderr(), DEFAULTCHART);
} else {
System.out.println("执行命令成功,链接conn:" + connection + ",执行的命令:" + cmd);
}*/
/*connection.close();
session.close();*/
}
} catch (Exception e) {
log.info("执行命令失败,链接conn:" + connection + ",执行的命令:" + cmd + " " + e);
// e.printStackTrace();
}
return result;
} /**
* 解析脚本执行返回的结果集
*
* @param in 输入流对象
* @return 以纯文本的格式返回
*/
private static String processStdout(InputStream in) {
InputStream stdout = new StreamGobbler(in);
StringBuffer buffer = new StringBuffer();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(stdout, StandardCharsets.UTF_8));
String line = null;
while ((line = br.readLine()) != null) {
buffer.append(line).append("\n");
// System.out.println(line);
}
br.close();
} catch (IOException e) {
log.info("解析脚本出错:" + e.getMessage());
// e.printStackTrace();
}
return buffer.toString();
}

最新文章

  1. 怎样用ZBrush对模型进行渲染(二)
  2. python 多线程学习
  3. RIA+REST架构实现完美WEB开发
  4. 指令中 controller && controllerAs
  5. python下异常处理
  6. Spring对jdbc支持
  7. Tencent分布式开源框架Pebble
  8. SAP QA32 做使用决策系统报错:分类数据的不一致性=>交易终止
  9. Java Scanner 类
  10. mybaits返回自增主键ID
  11. day_44_Django
  12. WinForm下的loading框的实现
  13. Nginx详解二十二:Nginx深度学习篇之Lua解释器安装及基础语法
  14. Linux 流量控制总结(TC)
  15. IUSER 匿名帐户密码获取
  16. f5会话保持
  17. 【题目】求n以内的素数个数
  18. 1. oracle12C的安装
  19. Web中路径问题
  20. Python(socket编程——2)

热门文章

  1. c++ set与unordered set的区别
  2. SpringSecurity-5.11-课堂笔记-01
  3. PhpMyadmin后台拿webshell方法总结
  4. fastcgi未授权访问及任意命令执行
  5. 细说MVC框架的几大困惑:
  6. 知识点简单总结——minmax容斥
  7. K8S原来如此简单(七)存储
  8. 用腾讯云Gogs搭建私有git服务器
  9. 深入理解Java虚拟机-JVM运行时数据区域
  10. Log4j使用(转)