使用 Ttyutils 截获 UNIX/Linux 终端
监控用户在终端上的会话的话,那么只需要使用前面描述的内容即可,但是如果还想得到更多,那么就可能需要这里描述的内容- 事件触发.
ttyexec 的一个有用的机制是事件触发,它是根据被监控程序的标准输出引起终端屏幕的变化来工作的,每当被监控程序改变终端屏幕的内容时,ttyexec 会根据更新后的屏幕内容与事件表中的事件条件进行匹配,如果成功,那么就会执行一个事件定义的程序. 事件表 在 ttyexec 内容维护了一个事件表,每个节点是一个事件,每个事件由 4 个部分组成: 事件的名称; 事件匹配器 由一个或多个 事件条件 组成,每个 事件条件 又根据类型的不同而不同,我们介绍完虚拟终端后再回头描述事件条件. 事件动作 是一个程序的名称和它的参数 ( 如果有的话 ),它是一个标准的可执行程序,在事件的匹配器得到匹配时执行.
虚拟终端 ttyexec 内部运行着一个虚拟的终端,它可以正确的解析发送到实际终端的那些控制序列,并在内存中重构一个和真实终端屏幕一样大小的屏幕,它的内容和用户在实际终端上看到的是一样的,但是对于用户而言,它是不可见的. 每当被监控的程序改变终端屏幕的内容时,ttyexec 的虚拟终端也会同步更新自己的屏幕,然后它开始检查事件表,如果发现了匹配的事件,就执行为事件定义的事件动作. 事件匹配 在 ttyexec 的事件表的每个事件中, 事件匹配器 由一到多个 事件条件 组成, 事件条件 是真正要去和虚拟终端屏幕比对的单元, 事件匹配器 只有在所有事件条件都匹配的情况下才是匹配的. 每个 事件条件 的类型有两种,第一种是根据光标的位置,第二种是根据屏幕上的数据. 光标位置是指光标到达某个指定的坐标时,条件就得到了满足,这种类型的条件需要两个参数,坐标的行和列. 屏幕的内容是指屏幕某个区域的内容达到预期的值,这种类型的条件需要四个参数,行,起始列,长度,以及一个正则表达式. 事件表维护 有两种途径来管理 ttyexec 的事件表,第一种是通过 ttyexec 的配置文件,叫做 ttyexec.lua,这个文件使用标准的 Lua 程序语言.这种方式称为静态事件管理. 第二种方式是使用 ttyutils 提供的编程接口,外部程序可以动态的维护 ttyexec 事件表,这种方式称为动态事件管理.动态事件管理很强很实用, 在一个复杂的环境中,通常利用静态管理来维护 ttyexec 的初始事件,而在适当的时候利用动态事件管理来动态的维护 ttyexec 的事件表. RPC 服务 远程过程调用 (remote process call)RPC 服务是 ttyexec 为进程间通讯提供的接口,注意它和 SUN RPC 没有任何的关系,并且不能跨网络使用. 当事件触发时,事件动作程序被启用,事件动作程序是一个标准的应用程序,它可以做任何它喜欢的事情,但是有时候,它需要和 ttyexec 交互,例如它可能需要获取当前终端屏幕的内容, ttyexec 为这样的情况提供了准备,称为 RPC 服务. Ttyexec 提供了下面的服务 : snap: 获取当前终端屏幕的快照; |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |