O prompt de senha pode ser evitado emitindo diretamente o comando CREATE USER
SQL, que é o que o comando createuser
faria, afinal.
~$ psql << EODOC
>create user foo password 'bar';
>EODOC
CREATE ROLE
~$
Estou tentando automatizar a criação de um usuário do PostgreSQL com um script bash.
Estou especificando a senha inicial, conforme solicitado pelo comando "createuser", e gostaria de fazê-lo no bash, o que, na minha opinião, implica um documento aqui.
No entanto, as respostas prontas que eu especifiquei não são enviadas para o comando "createuser"! Aqui está entrando diretamente no script na linha de comando:
-bash-4.1$ createuser mynewuser -P <<ENDBEFORETHIS
> fakepassword
> fakepassword
> n
> n
> n
> ENDBEFORETHIS
Enter password for new role:
-bash-4.1$
Por que isso?
Para aqueles que acabam de se juntar a nós, o "< <" é conhecido como um aqui-documento ou um "heredoc", que essencialmente canaliza as próximas linhas para o comando como stdin. Funciona até o rótulo correspondente especificado após "< <".
Is there a more effective way of doing this?
Você provavelmente deve procurar usar expect(1)
.
Por razões de segurança, senhas não serão aceitas através de stdin. usar o expect irá ajudá-lo nisso.
Tags bash postgresql