SSH-2协议工具包:
CacheCloud平台提供了对redis集群的集中化管理、运维、监控等功能,但是CacheCloud是如何对机器进行监控和维护的呢?是
如何获得redis所在服务器的信息呢?
通过查看源代码,发现平台引入了SSH-2协议的工具包:ganymed-ssh2,这个工具包提供了java连接linux服务器的功能,通过这个工具包就可以在服务器上面执行应用逻辑
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>build210</version>
</dependency>
CacheCloud中用于SSH-2连接的类主要包含了以下几个:
- SSHTemplate:提供了SSH操作的模板,包含了创建SSH连接、执行SSHCallback回调、获取结果、解析结果和关闭连接的功能
- SSHSession:根据SSH连接获取session会话;执行linux命令,获得执行结果;上传文件到远程服务器
- Result:SSH结果包装类
- SSHCallback:SSH执行命令回调
- LineProcessor:结果解析器
- DefaultLineProcessor:默认的结果解析器
- SSHUtil:工具类,包含了收集机器信息、传输文件到远程服务器、查看端口是否被占用、获得ssh端口和获取cpu状况
SSHSession:
获取SSH连接:
/**
* 通过回调执行命令
* @param ip
* @param port
* @param username
* @param password
* @param callback 可以使用Session执行多个命令
* @throws SSHException
*/
public Result execute(String ip, int port, String username, String password,
SSHCallback callback) throws SSHException{
Connection conn = null;
try {
conn = getConnection(ip, port, username, password);
return callback.call(new SSHSession(conn, ip+":"+port));
} catch (Exception e) {
throw new SSHException("SSH err: "