命令执行器

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):
        ...

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring数据JPA+Hibernate在不首先找到父实体的情况下保存子实体   php Java:如何从CLI接收命令   spring为java中的导出数据创建访问文件   java在Windows 8.1上安装Play Framework   java Spring启动白标签错误页面(类型=未找到,状态=404)   java如何在单击时从数组中绘制?   java fn:substringAfter()上次出现   java在IFR语句中使用方法返回   java onPause()或onStop()的名称   对关联对象的关联对象具有条件的java HQL查询   java只打印一次总值,无需迭代   java如何使用抽象Uri buildOn()方法?   如何在Java中执行sudo命令并获得错误输出?   java反射:避免对getConstructor(类<?>…)的未经检查的警告调用作为原始类型类的成员   Java:如何从类中创建的对象调用类方法?   java如何在电子邮件中嵌入图像?   java如何在Android上启用详细GC?   java什么是串行版本id?