当前位置:  开发笔记 > 编程语言 > 正文

如何让Fabric自动(而不是用户交互式)与shell命令交互?结合pexpect?

如何解决《如何让Fabric自动(而不是用户交互式)与shell命令交互?结合pexpect?》经验,为你挑选了2个好方法。

寻求意味着让Fabric自动(而不是用户交互式)与shell命令交互(而不仅仅是密码请求,还有没有"stdin/interactive override"的请求用户输入apt-get install -y).

这个问题以及这些Fabric文档表明Fabric只能"将交互性"推回到运行Fabric程序的人类用户.寻求在没有任何人类存在的情况下完全自动化.还没有一个"真正的"当前问题需要解决,只是为可能的未来障碍做准备.

如果Fabric不能自动独占处理所有stdin /提示,那么与pexpect(或类似的替代机制)结合可能很有用吗?希望它不需要是"任何/或"类型的东西.为什么不在适当的情况下(如果适用)在同一程序/自动化中同时利用(pexpect和Fabric)?



1> Jasper van d..:

作为格伦,我会说使用pexpect; 此外,

看看我写的这个包装器来编写来自fabric的pexpect行为:

from ilogue.fexpect import expect, expecting, run 

prompts = []
prompts += expect('What is your name?','John')
prompts += expect('Where do you live?','New York')

with expecting(prompts):
    run('command')

另请参阅我的关于fexpect的博客或如何使用pexpect处理结构中的提示



2> Glenn..:

这不是/或.你只需要通过pexpect运行fab命令:

child = pexpect.spawn('fab ')
child.expect('prompt:')
child.send('reponse to prompt')
... etc

fab命令就像任何其他命令一样,因此可以通过pexpect编写脚本.


但这并不"使结构自动与shell命令交互".这很容易与织物自动交互.
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有