Python Fabric:如何处理任意远程shell提示以获取输入?

13 投票
5 回答
6119 浏览
提问于 2025-04-15 21:40

这段内容和这里的一个问题有关,不过有点不同:我需要Fabric不仅仅传递'yes'或'no',而是要传递一个任意的字符串到远程的命令行。

举个例子,如果远程命令行问'你叫什么名字?',那么我需要输入'first,last'。

补充说明:我知道我说的是任意输入,但其实我是在尝试在进行git pull时使用SSH密钥密码提示

更新 #1:收到了Jeff Forcier @bitprophet的回复

5 个回答

2

也许可以了解一下 pexpect 这个工具。

5

我在邮件列表上提议了一个关于这个功能的API,并且最后自己写了一些东西:

from 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')

可以查看我在这个链接上写的博客,内容是关于如何在fabric中使用fexpect处理提示信息的:expecting prompts in fabric with fexpect

4

在Fabric 1.0中,终于支持与远程服务器的互动了。想了解更多细节,可以查看这个页面

撰写回答