我希望能够从远程计算机登录到我的 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:
有什么方法可以让我提供密码(或响应提示)以便它自动登录?
最佳答案
我知道有两种方法可以解决这个问题:
- .pgpass password file在远程主机上的主目录中
- PGPASSWORD env variable (在远程主机上设置)
如果您需要在远程主机上设置环境变量,请使用 with shell_env(PGPASSWORD='mypassword')
,Fabric 文档在这里:fabric.context_managers.shell_env
希望它能解决您的问题。
关于python - 使用 fabric 如何为 psql 提供密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21266626/