首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理fabric python中的交互式外壳

如何处理fabric python中的交互式外壳
EN

Stack Overflow用户
提问于 2017-11-23 05:45:05
回答 1查看 2K关注 0票数 0

1.在执行expect('OPR>','show‘)之后,它会变成无限的意思,它继续运行。

代码语言:javascript
复制
from fabric.api import *
from fabric.context_managers import settings
from ilogue.fexpect import expect, expecting, run

prompts = []
prompts += expect('Username:','kirti')
prompts += expect('Password:','kirti')
prompts += expect('OPR>','show users')
prompts +=expect('OPR>','exit')
env.password = "kirti@123"
with cd('/home/kirti/opr'):
with expecting(prompts):
run('./kirti', combine_stderr=False)
EN

回答 1

Stack Overflow用户

发布于 2017-12-09 19:51:44

Fabric >= 1.9允许同时在一个with子句中处理多个提示:您只需要使用Fabric的settings函数,并向它提供一个dict;键将是问题,而值将是答案。在您的例子中,它将看起来像:

代码语言:javascript
复制
with settings(prompts={'Username:':'admin', 
                       'Password:':'admin', 
                       'OPR>':'show alef-users', 
                       'OPR>':'exit'}):
    run('./go_opr_cli', combine_stderr=False)

我的回答是受那一节的织物官方文档的启发。它对我非常有用,但是在编写dict键时,请确保在命令行中尊重问题的最后一个字符和光标之间的空格数,否则就会失败。

最后一个提示符是'OPR>‘。如果您在常规Linux中看到'OPR>‘和光标之间有一个空格,那么键应该是'OPR>’。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47448384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档