2014-01-21 2 views
3

Я хочу, чтобы иметь возможность войти в мою базу данных postgres AWS с удаленной машины. Я использую следующий Fabric скрипт:Использование ткани, как я могу предоставить пароль для psql?

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: 

есть ли способ, что я могу поставить пароль (или ответить на запрос), так что он вот gs меня автоматически?

+0

Вы пытались настроить конфигурацию базы данных на «trust» в файле pg_hba.conf? Я не уверен, но я хочу, чтобы psql не запрашивал пароль. – yellowcap

+0

Я не могу редактировать файл 'pg_hba.conf', поскольку AWS не разрешает его. – djq

+0

Я только что проверил на консоли RDS, unter «группы параметров», вы можете изменить набор параметров, и есть флаг «изменяет». Файл hba.conf не модифицируется, поэтому может быть невозможно разрешить доступ IP без пароля. – yellowcap

ответ

4

Есть 2 способа решения этого, что я знаю:

Если вам нужно установите переменную окружения на удаленном хосте, используйте with shell_env(PGPASSWORD='mypassword'), Тканевые документы здесь: fabric.context_managers.shell_env

Hop Он решает вашу проблему.

+0

Спасибо за предложения. Просто попробовал использовать 'run ('export PGPASSWORD = mypassword'), но это не работает. – djq

+0

Это специальная ткань ... см. Обновленный ответ. –

+0

Фантастический! 'with context_managers.shell_env (PGPASSWORD = 'mypassword')' работал. – djq

Смежные вопросы