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