QSsh之SshConnection类

SshConnection

#include”sshconnection.h”       所在的头文件html

类:SshConnectionParameters:

链接须要的信息类。包含须要链接的主机和验证信息。git

enum AuthenticationType 验证方式github

{AuthenticationByPassword, 密码验证shell

AuthenticationByKey}; key文件验证api

公有函数:服务器

SshConnectionParameters() 构造函数。框架

属性:ssh

QString host; 主机,主机名或者主机地址异步

QString userName; 用户名socket

QString password; 密码

QString privateKeyFile; 密匙文件。(文件地址)

int timeout; // In seconds. 链接等待时间,超过期间就自动返回链接超时,单位秒(s)

AuthenticationType authenticationType; 验证方式

quint16 port;

SshConnectionOptions options; 链接设置

SshConnectionOption枚举

enum SshConnectionOption {

SshIgnoreDefaultProxy = 0×1,  忽略默认代理?

SshEnableStrictConformanceChecks = 0×2

};

 

Q_DECLARE_FLAGS(SshConnectionOptions, SshConnectionOption)

 

 

 

类:SshConnectionInfo

链接信息类。

公有函数:

SshConnectionInfo() : localPort(0), peerPort(0) {}   构造函数

SshConnectionInfo(const QHostAddress &la, quint16 lp, const QHostAddress &pa, quint16 pp)

: localAddress(la), localPort(lp), peerAddress(pa), peerPort(pp) {} 构造函数

 

QHostAddress localAddress; 本地IP地址

quint16 localPort; 本地端口

QHostAddress peerAddress; 目标地址

quint16 peerPort; 目标地址

 

 

类:SshConnection

链接到服务器的类。下面打开和执行命令,ssh socket通道,sftp面板都须要此类。

 

enum State{Unconnected,Connecting,Connected}; 链接状态枚举{未链接,链接中,已链接}

公共函数:

explicit SshConnection(const SshConnectionParameters &serverInfo, QObject *parent = 0); 构造函数,参数是链接所需的信息类,和父对象。

 

void connectToHost(); 链接到服务器(异步)

void disconnectFromHost(); 从服务器断开链接

State state() const; 返回当前链接的状态

SshError errorState() const; 返回当前链接的错误

QString errorString() const; 返回当前链接错误的文本信息

SshConnectionParameters connectionParameters() const;  返回所用的链接信息类

SshConnectionInfo connectionInfo() const;  返回当前的链接信息

~SshConnection(); 析构函数

 

QSharedPointer<SshRemoteProcess> createRemoteProcess(const QByteArray &command); 建立一个命令执行过程呢,参数是须要执行的命令。命令执行完即退出,返回参数为SshRemoteProcess(远程进程类)的智能指针。

QSharedPointer<SshRemoteProcess> createRemoteShell(); 建立一个shell,返回的也是shRemoteProcess(远程进程类)的智能指针。这个能够保持状态,屡次执行命令。Ssh跳板也是支持的,合理设计实现自动交互。

QSharedPointer<SftpChannel> createSftpChannel();  建立一个sftp面板,返回的是SftpChannel(sftp面板类)的智能指针

QSharedPointer<SshDirectTcpIpTunnel> createTunnel(quint16 remotePort); 建立一个ssh隧道,返回的是SshDirectTcpIpTunnel的智能指针。(这个类能够实现ssh的scoket代理。),参数是本地监听端口。

 

// -1 if an error occurred, number of channels closed otherwise.

int closeAllChannels(); //关闭全部通道数,正常返回通道数,错误返回-1

 

int channelCount() const;  通道数

 

发出的信号;

void connected(); 以链接到服务器

void disconnected(); 已从服务器断开链接

void dataAvailable(const QString &message); (有数据可用?)

void error(QSsh::SshError); 链接错误

 

 

 

Ssherro枚举:

enum SshError {

SshNoError, 没有错误

SshSocketError,  scoket错误

SshTimeoutError,  链接超时

SshProtocolError,

SshHostKeyError,  密码错误

SshKeyFileError, key验证错误

SshAuthenticationError,

SshClosedByServerError,

SshInternalError

};

 

 

注:QSSH是提取自Qt-creator里的一个ssh连接库,用botan库实现的加密,用qt框架的实现的ssh连接库。

这是官方留下的接口,官方的封装模式大概是(我从源码看的,Qt库源码我未读过,不清楚):

留出api类逻辑处理和运算单独存在一个private类里,api类里私有对象有一个private类,api里只是为了简洁的接口,隐藏细节的一个中间。话说,这个接口就够咱们用的了。

此为我在使用中获得的一些参数和用法,非官方文档,有错误的地方请你们指正,还有的拿不许的就在后面加了个?号。

QSsh地址:http://www.oschina.net/p/qssh

https://github.com/dushibaiyu/QSsh

我Blog:http://www.dushibaiyu.com

本文地址:http://www.dushibaiyu.com/2014/01/qssh%E4%B9%8Bsshconnection%E7%B1%BB.html

相关文章
相关标签/搜索