WEB开发网
开发学院软件开发Python 使用 Twisted 框架进行网络编程,第 4 部分 阅读

使用 Twisted 框架进行网络编程,第 4 部分

 2008-11-13 13:13:47 来源:WEB开发网   
核心提示: SSH Weblog 客户机下面接着讨论本系列文章的例子,我创建了一个工具,使用 Twisted 框架进行网络编程,第 4 部分(2),用来检查我的 Web 服务器 log 文件中的点击率,不过这次是在一条加密的 SSH 通道上完成的,实际的定制工作正是通过它来完成的,明确地说就是,这个目

SSH Weblog 客户机

下面接着讨论本系列文章的例子,我创建了一个工具,用来检查我的 Web 服务器 log 文件中的点击率,不过这次是在一条加密的 SSH 通道上完成的。这个目标实际上也是现实的 -- 也许我不希望监听我的数据包流的人公然看到我的点击率。

Twisted 包自身并没有相应的支持模块,显然也没有确切的文档来说明其原理。在深入工作之前,我需要弄清楚 twisted.conch 包中的 import Crypto 那一行究竟有什么用处。它的名字显然是一种提示,不过我对由 Andrew Kuchling 维护的 Python 加密库也有一定程度的了解(请看 参考资料中的链接)。搜索一下Google,下载,然后安装,Twisted 的 test_conch.py 就很顺利地运行起来了。这样就可以开始创建定制的 SSH 客户机了。

我是基于 Twisted 文件 doc/examples/sshsimpleclient.py 中提供的例子创建客户机的;您也许还想看看那个例子中还有些什么。twisted.conch 像大多数 Twisted 组件一样,包含若干层,其中的每一层都是可以定制的。我猜想“conch”这个名字在安全 Shell 的世界中代替了“shell”的角色。

传输层是一个定制的 SSHClientTransport 。我们可以定义若干个方法,不过至少需要定义 .verifyHostKey() 和 .connectionSecure() 。在实现时,我们完全信任所有的主机密钥,只是通过返回一个 defer.succeed 对象,将控制交回给异步反应器(reactor)的核心。当然了,如果您打算根据已知密钥验证某台主机,您可以在 .verifyHostKey() 中实现。

创建通道的过程也就是其他几层加入进来的时候。 SSHUserAuthClient 的子类完成实际的登录认证工作;如果认证成功,它就建立起一条连接(我将连接定义为 SSHConnection 的子类)。这条连接紧接着创建一个通道——即 SSHChannel 的子类。我将这条通道简单命名为 Channel ,实际的定制工作正是通过它来完成的。明确地说就是,这条通道实现了数据和命令的发送与接受。下面让我们来看看我定制的客户机:

上一页  1 2 3 4 5 6  下一页

Tags:使用 Twisted 框架

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接