unix机器上万能的远程命令执行器

talker的Python项目详细描述


Build StatusPyPI version

发言人

The almighty remote command executor for Unix machines

基本用法

将客户端连接到redis后端

In [1]: from talker.client import get_talker

In [2]: params = dict(
    host='redis.example.com',
    password='*********',
    port=8415,
    name='SomeRedisServer')

In [2]: client = get_talker(**params)

In [3]: client
Out[3]: <Talker SomeRedisServer/redis.example.com:8415>

运行命令

In [1]: cmd = client.run(host_id, 'bash', '-ce', 'echo hello')

In [2]: cmd.result()
Out[2]: 'hello\n'

等待命令

In [1]: cmd = client.run(host_id, 'bash', '-ce', 'sleep 10')

In [2]: cmd.wait()
Out[2]: 0

命令超时

In [1]: cmd = client.run(host_id, 'bash', '-ce', 'sleep 10', timeout=2)

In [2]: cmd.wait()
CommandTimeoutError: Command timed out after 2s: `bash -ce sleep 10`
    args = bash -ce sleep 10
    cmd = f812c749-bdf1-4761-bae3-a279b07c64c4
    host_id = 827605a7-791e-4c6c-8f5c-eca52d7849f5.talker-0
    hostname = talker-0
    name = `bash -ce sleep 10`
    retcode = -1
    since_started = 2.2s
    stderr =
    stdout =
    talker = <Talker SomeRedisServer/redis.example.com:8415>
    timeout = 2s
    timestamp = 2019-06-24T15:41:10.112050

命令失败

In [25]: cmd = client.run(host_id, 'bash', '-ce', 'exit 2')

In [26]: cmd.result()
CommandExecutionError: Command execution error: `bash -ce exit 2`
    args = bash -ce exit 2
    cmd = 58564019-88cd-4c1b-8067-b0dada118ac4
    host_id = 827605a7-791e-4c6c-8f5c-eca52d7849f5.talker-0
    hostname = talker-0
    name = `bash -ce exit 2`
    retcode = 2
    since_started = None
    stderr =
    stdout =
    talker = <Talker SomeRedisServer/redis.example.com:8415>
    timestamp = 2019-06-24T15:42:00.020477

忽略命令失败

In [1]: cmd = client.run(host_id, 'bash', '-ce', 'exit 2', raise_on_failure=False)

In [2]: cmd.result()
Out[2]: ''

运行时记录命令输出

In [43]: cmd = client.run(host_id, 'bash', '-ce', 'for i in {1..5}; do date; sleep 1; done')

In [44]: cmd.log_pipe(logger=logging.getLogger(), stdout_lvl=logging.WARNING)
Mon Jun 24 15:47:43 IDT 2019
Mon Jun 24 15:47:44 IDT 2019
Mon Jun 24 15:47:45 IDT 2019
Mon Jun 24 15:47:46 IDT 2019
Mon Jun 24 15:47:47 IDT 2019

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

推荐PyPI第三方库


热门话题
java WLPs微文件(容错)超时实现不中断线程?   使用Jsoup对网页进行java解析。为什么Android上的行为有所不同?   java全屏安卓应用程序功能   java有没有一种方法可以将自定义对象列表放入cloudfirestore中的自定义对象中   平滑后的javagps数据比较   使用Java8谓词查找“最”正确值的函数式编程   java调整JFrame的大小(当子对象调整大小时):如何跟上?   if语句中的java条件   java如何配置JSP应用程序在Jboss和Tomcat上透明地处理JNDI   java如何在spring boot中验证@RequestHeader是否为null?   java从URL检索XML时不写入前几行   java在重写的paintComponent(…)中旋转图像方法   java Android透明GradientDrawable在emulator上变灰   java如何编辑PostgreSQL的Oracle 11G设置   java JAXb在解组期间未填充对象   java重新启动了响应。getBody()。getList(<ListName>)正在返回一个空集合   PHP和Java在能耗方面有什么不同?   没有源属性但嵌入html标记的java iFrame   java JTable导致我的应用程序崩溃