命令执行器
delgado的Python项目详细描述
通过unix套接字侦听命令并在终端中执行它们。
它解决了文本编辑器不想捆绑实际终端的问题 模拟器。
delgado要求在预定的uds上激发有效的json对象 (Unix域套接字)。Delgado必须知道哪些命令被授权 在运行之前执行,防止运行任意命令)。
只允许运行ls的非常简单的侦听器如下所示:
$ delgado run --allowed ls
在另一个终端上,将json发送到该套接字可能是 例如:
$ echo '{"ls": ["/tmp/foo"]}' | nc -U /tmp/delgado.sock
回音管道传递到nc(bsd netcat),后者依次发送信息 到插座。在默认的日志记录级别下,输出将如下所示 这个:
$ delgado run --allowed ls --> Running command: [u'ls']
注意
如果您计划使用netcat,请确保它是bsd版本 它支持uds(使用-U标志)。GNU版本不会 工作。您可以使用任何可以通过uds通信的工具。
插件
delgado构建时考虑了一些模块性,默认情况下 py.test插件,它将运行服务器并侦听py.test命令 只有。
插件使用setuptools入口点。如果你想要一个新的插件 可用,这是它的setup.py文件上应该有的:
setup( ... entry_points = dict( delgado_handlers = [ 'my_command = my_package.my_module:MyClass', ], ),
MyClass应该是一个接受sys.argv作为参数的类, delgado将在实例化时传入并调用parse_args 方法。
这就是py.test插件的外观,例如:
class Pytest(object): help_menu = 'A handler for running py.test commands' _help = """ Run a base socket listener that allows py.test commands. --socket-location The location for the socket (defaults to /tmp/pytest.sock) """ def __init__(self, argv): self.argv = argv def parse_args(self): ...