3

Я пытаюсь автоматизировать создание пользователя PostgreSQL с помощью скрипта bash.

Я указываю исходный пароль, как подсказывает команда "createuser", и я хотел бы сделать это в bash, что, я думаю, подразумевает документ здесь.

Тем не менее, ответы на подсказки, которые я указал, не соответствуют команде "createuser"! Вот непосредственно ввод сценария в командной строке:

-bash-4.1$ createuser mynewuser -P <<ENDBEFORETHIS
> fakepassword
> fakepassword
> n
> n
> n
> ENDBEFORETHIS
Enter password for new role: 
-bash-4.1$ 

Это почему?

  • Как я могу получить вход для скрипта createuser?
  • Есть ли более эффективный способ сделать это?

Для тех, кто только что присоединился к нам, «<<» называется здесь-документом или "heredoc", который, по сути, передает следующие несколько строк в команду как stdin. Он работает до тех пор, пока не будет найдена соответствующая метка, указанная после «<<».

3 ответа3

2

Есть ли более эффективный способ сделать это?

Вероятно, вы должны изучить использование expect(1).

1

По соображениям безопасности пароли не будут приниматься через стандартный ввод. использование ожидающих поможет вам в этом.

1

Запроса пароля можно избежать, введя непосредственно SQL-команду CREATE USER , что, в любом случае, в конечном итоге и сделает команда createuser .

~$ psql << EODOC
>create user foo password 'bar';
>EODOC
CREATE ROLE
~$

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .