我试图通过Fabric自动执行以下操作:
dbshell
)。如果我手动执行此操作,则需要:
$ ssh -i ~/.ssh/remote.pem ubuntu@10.10.10.158
ubuntu@10.10.10.158$ python manage.py dbshell
postgres=> Password For ubuntu: _____ # i'd like to pass known data to this prompt
postgres=> # i'd like to pass known data to the prompt here, then exit
======
我目前的解决方案类似于:
from fabric.api import run
from fabric.context_managers import settings as fabric_settings
with fabric_settings(host_string='10.10.10.158', user='ubuntu', key_filename='~/.ssh/remote.pem'):
run('python manage.py dbshell')
# i am now left wondering if fabric can do what i'm asking....
答案 0 :(得分:1)
在此通过推特回复Sean,但首先要查看的是http://docs.fabfile.org/en/1.10/usage/env.html#prompts - 不完美但在某些情况下可能就足够了:))
即将推出的v2在管道中有一个更加可靠的实现此功能,理想情况下还可以选择更像pexpect的API(意思是更多串行导向)作为选项。
答案 1 :(得分:0)
您可以使用运行系统的 Pexpect 并检查输出,如果输出与给定模式匹配,Pexpect可以作为人类输入进行响应。