Ttyutils终端会话监控软件
Ttyutils 是一套 UNIX/Linux 终端会话监控软件工具包,也是一个可定制和扩展的平台。通过建立一个伪终端来运行一个程序,Ttyutils 能够截获被监控程序全部的输出数据,以及完整的控制被监控程序的标准输入。
在截获程序的输出数据之后,Ttyutils 可以将这些数据录制到一个压缩和加密的文件中,后续可以通过一个播放器回放来重现当时的会话,或者将这些数据发送给网络上的一个监控客户程序来达到实时终端会话监控的目的。终端会话播放器、实时监控程序默认都包含在 Ttyutils 中,不用额外安装,立即可用。
除此之外,Ttyutils 将利用截获到的数据在内存中建立一个虚拟终端,这个终端的内容总是和用户在屏幕上看到的内容保持一致,它类似于 xterm 这样的终端仿真器,但是在内存中,对用户不可见。用户可以通过在这个内存终端仿真器上设置屏幕特征匹配条件来触发定制的动作,例如当屏幕上第一行中第一列到第十列的内容匹配正则表达式 '[0-9a-z].*' 时,发送一封邮件到某个邮箱,或者弹出一个对话框,等等。触发的动作是用户自己编写的一个程序,它几乎可以干任何它喜欢的事情。
和 telnet,ssh 等软件不同,Ttyutils 不能帮助你登陆到远程的主机,它只能监控已经登陆的终端会话,您可以将 Ttyutils 理解为运行在终端上的外挂软件包。实际上,Ttyutils 在设计上将其定位为二次开发平台,除了基础的文件录制/播放、实时监控功能之外, Ttyutils 提供的功能都服务于二次开发,这导致 Ttyutils 的很多功能难于使用,却无比灵活。我们总是希望 Ttyutils 能够更好的适应不同的应用场合,事实上也确实如此,看似完全没有干系的两个应用,其基础平台都是采用 Ttyutils。这个特点是 Ttyutils 设计上的一个与众不同之处。
Ttyutils 的用法类似于 shell 内置命令 `exec',所以,Ttyutils 软件包中的主要程序命名为 ttyexec。
初次接触 Ttyutils 的用户可能对上面的描述不甚理解,可以看看终端监控解决方案,如果您对 Ttyutils 的内部原理好奇,可以看看刊登在 IBM DeveloperWorks 中国网站上的 使用 Ttyutils 截获 UNIX/Linux 终端。
特征
* 内置 vt102+xterm 兼容的虚拟终端仿真,支持字符属性,色彩,等等,内部编码使用 Unicode,支持字符集转换。支持国内常用的终端 (包括长城、实达、新大陆、湘计) 辅串口指令序列,可以通过简单的扩展配置来支持更多。
* 灵活的配置参数允许管理员精确的控制 ttyutils 各个方面的行为。配置文件自身是一个 Lua 脚本文件。对于不熟悉 Lua 的管理员,可以使用和 .ini 文件格式类似的配置文件(这个配置文件最终也是由 Lua 配置文件中调用一个函数来解析)。
* Ttyutils 的绝大多数代码使用纯 C 语言编写,它应该具有不错的性能和可移植性。
* 嵌入了 Lua 解释器的最新版本,用户能够用 Lua 语言来定制和扩展 Ttyutils,当然,C 语言总是可用的,但是对于通常的任务,使用 Lua 语言会让事情更加简单,快速,也更稳定。
* Ttyutils RPC (远程过程调用) 协议允许管理员在远程管理 Ttyuils,或者允许第三方应用程序访问 Ttyutls 提供的服务。Ttyutils 为RPC 协议进行了封装,提供了一组 API 接口,开发人员使用封装后的接口时不用理会协议的细节,基本 API 是 C 语言接口,但也提供了 Lua 和 Python 语言的接口。
* 基于插件的体系让扩展新功能更加方便容易,可以根据具体的应用场合选择使用或禁用特定的插件,安装新插件不需要升级现有的系统。可以使用 C 和 Python 语言来开发新插件。
* 功能强大的管理控制台允许管理员方便的从远程管理 Ttyutils,管理控制台支持 Lua 脚本,可以将常用的任务保存到文件中,而不用每次都重新输入。
* 中心服务器可以管理运行在一台或者多台主机上的多个监控程序实例,当然,也可以在没有中心服务器的情况下运行监控程序,只是缺乏了管理能力。
* 事件触发机制允许用户精确的控制终端会话,事件触发条件可以匹配热键,当前光标位置,以及用正则表达式去匹配当前屏幕内容。事件动作可以使用 C,C++,以及 Ttyutils RPC 协议支持的邦定语言编写。因为 RPC 协议提供有 C 语言接口,用户如果要邦定到新的语言也不会有太大困难。
* 可以将程序的输出数据录制到一个加密和压缩的文件中。提供有 GUI 版本的播放器用来播放 Ttyutils 录制的文件。GUI 播放器可以在主流的 UNIX/Linux 平台上运行,也可以在 Windows 平台上运行。当然,Ttyutils 也提供了在终端中运行的播放器。
* 内置监视服务器,客户端能够连接到这个服务器来实时的查看程序的输出。提供有 GUI 版本的监视器用来连接 Ttyutils 监视服务器来实时查看程序的输出,GUI 监视器可以在流行的 UNIX/Linux 平台上运行,也可以在 Windows 平台上运行。当然,Ttyutils 也提供了在终端中运行的监视器。
* Ttyutils 基础库提供了丰富的功能, API 接口清晰,用户可以利用 Ttyutils 库提供的功能来实现各种终端监控相关的应用程序。Ttyutils 的辅助工具包就是利用 Ttyutils 库实现的各种功能专一的应用程序,包括文件录制工具,播放工具,等等。
* 可以在很多 UNIX/Linux 平台上使用,不需要对系统进行特殊的修改或配置。遵循标准,可以和其它标准兼容的软件协作。
* 支持国际化,Ttyutils 会根据系统当前的语言环境自动选择相应的语言,目前支持中文和英文,可以通过翻译一个独立的文件来支持更多的语言。当 Ttyutils 运行在不支持的语言环境时,将使用英语。
* 需要少量的磁盘空间来安装,需要少量的内存来运行。Ttyutils 运行时需要 OpenSSL,ZLib,GLib 的支持,通常它们是系统的标准配置。
* 比较详细的文档,在本站点可以找到关于 Ttyutils 各方面的资料。
* 基于 MIT 授权协议发布,可以在开放源代码项目中使用,也可以在商业和封闭源代码项目中使用。Ttyutils 内部使用了 OpenSSL,ZLib,GLib 和 Lua 来实现一些特定的功能,它们的授权和 Ttyutils 授权协议没有冲突。
适用性
Ttyutils 主要用于以 UNIX/Linux 终端作为用户接口的环境,这包括:
* 实时监控 Telnet,SSH,控制台,和终端仿真上的会话
* 终端会话录制和回放,可用于教学,交流经验,追踪责任
* 终端任务自动化,可用于自动化日常系统管理,软件自动测试
* 利用事件触发机制结合编写事件程序来扩展现有程序的能力
* ...
Ttyutils 在实现上是小巧的、稳定的。实践证明,用户在一台 Linux 或者 AIX 主机上运行成百上千个进程,连续工作半年以上不会出现任何问题。Ttyutils 非常快,用户在被监控的终端上操作时感觉不到任何明显的延迟。