使用fabric如何为psql提供密码?

时间:2014-01-21 18:48:58

标签: python postgresql amazon-web-services fabric amazon-rds

我希望能够从远程计算机登录我的AWS postgres数据库。我使用以下Fabric脚本:

import sys
from fabric.api import env, run, abort

env.port = 123
env.use_ssh_config = True

def setuser(user):
    """Sets the ssh user for the fabric script"""
    env.user = user
    env.password = 'mypassword'

def setenv(server):
    """Sets the environment for the fabric script"""
    env.hosts = ['staging']

def sync():
    # log into AWS server
    run("psql --host=staging.xxx.rds.amazonaws.com --username=x_user  --port=5432 --password --dbname=x_database")
    run("mypassword")

我使用以下命令运行此Fabric脚本:

fab -f sync_staging.py sync --password=mypassword

这会将我登录到远程计算机,运行第run("psql ....行然后它会提示我输入密码:

[stage] out: Password for user x_user: 

有没有办法可以提供密码(或响应提示),以便自动登录?

1 个答案:

答案 0 :(得分:4)

我知道有两种方法可以解决这个问题:

如果您需要在远程主机上设置环境变量,请使用with shell_env(PGPASSWORD='mypassword'),Fabric文档:fabric.context_managers.shell_env

希望它能解决你的问题。