QSsh的SSH命令部分使用,Qt的ssh链接库

QSsh是从Qt-Creator里面提取的ssh协议的链接和shell命令执行。最近项目须要本身链接ssh服务器,进行shell输出捕获和自动回应。html

简单说下个人使用:git

单独提取的地址:https://github.com/dushibaiyu/QSsh (更新到最新qt-creator里的。)github

首先说下QSsh流程,首先链接:shell

新建SshConnectionParameters对象,初始化链接信息。这个类很简单,看下就懂了、、服务器

其次就是链接:SshConnection类,新建时必须指定链接信息、、、调用connectToHost()函数去链接,链接成功发送connected()信号。ssh

断开链接是:disconnectFromHost()函数,也会发送信号的、、函数

真正处理交互的是SshRemoteProcessRunner类和SshRemoteProcess类、、、sftp和ssh隧道的类项目没用到也没怎么看,能够本身研究下、、指针

先说SshRemoteProcessRunner类,这个类是为执行单挑或者单串命令准备的、、期间交互比较麻烦、、、htm

SshRemoteProcess类是很强大的类,可是他的构造函数倒是私有的、、不能直接定义的、、只有经过SshConnection类的createRemoteProcess(const QByteArray &command)函数或者createRemoteShell()来获得指向他的智能指针。对象

经过createRemoteProcess(const QByteArray &command)函数生成的和SshRemoteProcessRunner类执行单条命令相似,执行完马上退出的、、你能够经过信号捕获输出的结果、、、

最强大的是createRemoteShell()获得的SshRemoteProcess对象,其直接就是一个shell、、、相似putty的那样的,功能一点也不如弱的,二级命令,ssh跳板都支持的、、、经过readyReadStandardOutput()信号,得知服务端有输出,经过readAllStandardOutput()获得shell输出的内容、、、SshRemoteProcess是继承QIODevice的,当初找不到怎么向远程shell发送命令,最后竟然是经过write(…)函数、、、千万注意,命令后面别忘跟着换行符(博主傻瓜,由于这个细节失误研究了两天)、、、

 

操做sftp的 SftpChannel类和TCP隧道的SshDirectTcpIpTunnel类和SshRemoteProcess同样的,一样不能直接定义的都须要经过SshConnection类的函数来生成,返回只能指针、、而这两个类我在项目中没用到,也就没本身看就研究其余项目中的难点了、、

在QSsh项目的github中里面有Qt-creator官方的例子,和提取做者的一个sftp的例子,我也加了个ssh shell的例子、、若是您在项目中使用了QSsh,欢迎一块儿探讨、、您能够留言或者给我邮件、、、

Ps:没有逻辑,写的不好、、、、大牛们轻喷、、、

个人博客地址:http://www.dushibaiyu.com

此文的地址:http://www.dushibaiyu.com/2013/11/qssh%E7%9A%84ssh%E5%91%BD%E4%BB%A4%E9%83%A8%E5%88%86%E4%BD%BF%E7%94%A8%EF%BC%8Cqt%E7%9A%84ssh%E8%BF%9E%E6%8E%A5%E5%BA%93.html

但愿你们给点点击、、

相关文章
相关标签/搜索