Обсуждение: psql in 7.2devel loops
It used to be the case that psql could be run thus: psql -U summer -h numbat template1 <<ZZ password <commands> ZZ which is very convenient in scripting. Now, it writes a password prompt (successfully in my case) and tries to read the password (presumably from the tty) which fails. Here is the entire script that fails for me: #!/bin/bash set -x psql -U summer -h $HOSTNAME template1 <<zz thisisnotthepassword --\h create drop DATABASE sharetrader; CREATE DATABASE sharetrader; zz I ran this script from my console: #!/bin/bash ( exec </dev/null ( ( cat <<zz to: $USER@$HOSTNAME cc: summer@$HOSTNAME subject: postgresql build and test run `date` zz set -x time pg.build time pg.setupdb pg.ss start time pg.test pg.ss stop ) 2>&1) \ | /usr/sbin/sendmail -t & ) Presumably opening the tty worked - there is stil a terminal associated with the script. The environment is Red Hat Linux 7.2, 2.4.17 kernel.
John Summerfield <pgtest@ami.com.au> writes: > It used to be the case that psql could [ read a password from stdin ] > Now, it writes a password prompt (successfully in my case) and tries to > read the password (presumably from the tty) which fails. This was a deliberate change. I wasn't that happy with it myself, but I was outvoted. You're gonna have to find another way; sorry. I think "expect" was mentioned as one way of feeding passwords to programs that will only talk to a tty. On the whole, though, you'd be better off not embedding passwords in scripts in the first place. Consider rethinking your PG authorization strategy. (On Linux, at least, "ident" now works nicely across Unix sockets.) regards, tom lane