Использование Expect в Bash для установки начального & ldquo; postgres & ldquo; пользовательский пароль?

После учебника: http://www.unixmen.com/install-postgresql-9-4-phppgadmin-ubuntu-14-10/

Я создаю скрипт установки PostgreSQL в bash но проблема связана с установкой начального пароля пользователя.

Следуя руководству для этой части, мы имеем:

# Login to postgresql prompt:
sudo -u postgres psql postgres

# .. and set postgres password with following command:
postgres=# \password postgres 
Enter new password: 
Enter it again: 
postgres=# \q

Это здорово, но я хочу установить этот пароль из сценария Bash и одним из способов, с помощью которого этот тип задачи мог бы с использованием Expect:

# Build the command into a variable so that we can run it later
PSQL_QUERY=$(expect -c "

set timeout 10
spawn -u postgres psql postgres -c '\\\password postgres'

expect \"Enter new password:\"
send \"password\r\"

expect \"Enter it again:\"
send \"password\r\"

expect eof
");
# Run the command with automated entry
echo "$PSQL_QUERY";

Но когда я пытаюсь запустить скрипт, я получаю вывод следующим образом:

root@node:/home/user# ./test.sh 
send: spawn id exp6 not open
    while executing
"send "password\r""
spawn sudo -u postgres psql postgres -c '\password postgres'
psql: FATAL:  Peer authentication failed for user "postgres'"

Который я действительно не понимаю, потому что я новичок в PostgreSQL, и потому что когда я запускаю следующее:

root@node:/home/user# sudo -u postgres psql postgres -c '\password postgres'
Enter new password: <password>
Enter it again: <password>

Это работает. Может кто-то, пожалуйста, помогите мне с пониманием того, где я ошибаюсь, и как я могу это исправить, чтобы я мог установить новый пароль пользователя postgres из сценария bash. Спасибо заранее!

1
задан 15 October 2015 в 12:29

0 ответов

Другие вопросы по тегам:

Похожие вопросы: