.pgpass
Estou configurando um sistema simples de backup da base de dados do Job4Dev, usando as ferramentas crontab do linux e pg_dump do Postgres. Clássico.
Mas me deparei com um probleminha: a base de dados é criada com um usuário diferente do meu usuário no servidor. E o comportamento padrão do pg_dump (e de qualquer ferramenta relacionada ao Postgres)
é de pedir a senha em um prompt, o que é obviamente problemático em uma tarefa automatizada.
A solução é criar um arquivo chamado .pgpass, armazenado na raiz do home dir do usuário que irá executar o comando com a permissão 600 (qualquer outra permissão fará com que o arquivo seja ignorado) e contendo a seguinte informação:
hostname:port:database:username:password
Pronto, agora qualquer comando que envolva a tupla (host, port, database, username) descrita no arquivo tem acesso direto à base. Mais informações podem ser encontradas aqui.

Log4Dev » .pgpass…
Dica útil para quem trabalha com postgres e não quer ter que ficar digitando a senha da base de dados o tempo todo. Mais útil ainda para quem quer configurar backup de bases com crontab….
Ou voce poderia ter feito um script em expect. Mesmo que nao seja a melhor solucao pra esse caso, eh uma boa arminha pra ter na sua toolbox
Como seria um script em expect? Ficar monitorando o prompt do pg_dump pra mandar a senha?
Isso. Expect eh uma extencao de TCL que ajuda voce a escrever scripts pra programas interativos. Basicamente voce fala “agora espera aparecer ‘password’ e daih manda ‘blabla’”.
No seu caso voce tinha um workaround decente, mas quando nao tem, o unico jeito eh apelar pra uns scripts desses.
Eu cheguei a pensar nesta solução. Mas a experiência mostra que em geral estas ferramentas administrativas, que executam ações bem específicas (dump, restore, etc..) sempre possuem uma versão que permite executar automaticamente sem prompt.