【发布时间】:2009-09-26 23:03:33
【问题描述】:
我想用 Python 编写一个简单的命令行代理,位于 Telnet/SSH 连接和本地串行接口之间。应用程序应该简单地桥接两者之间的 I/O,但过滤掉某些不允许的字符串(由正则表达式匹配)。 (这适用于路由器/交换机实验室,用户可以远程串行访问这些盒子。)
基本上,客户端与守护程序建立了 Telnet 或 SSH 连接。守护程序将客户端的输入传递出(例如)/dev/ttyS0,并将来自 ttyS0 的输入传递回客户端。但是,我希望能够将来自客户端的某些字符串列入黑名单。例如,不应允许“删除 foo”命令。
我不确定如何最好地解决这个问题。通信必须是异步的;我不能简单地等待回车以允许将缓冲区送出串行接口。将正则表达式与流匹配似乎也很棘手,因为必须拦截以下所有内容:
delete foo(enter)
del foo(enter)
el foo(ctrl+a)d(enter)
dl(left)e(right) foo(enter)
...等等。唯一的实体分隔符是 CR/LF。
我希望有人能指出我正确的方向。我一直在浏览 Python 模块,但到目前为止还没有想到任何东西。
【问题讨论】:
标签: python regex command-line