PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : In Shellscript auf Passwortabfrage reagieren



sono
15-09-2005, 16:34
Ich habe mir ein Script geschrieben, dass ein Backup von eine Postgres Datenbank machen können sollte .

Das Problem ist hier leider , dass pg_restore sowie pg_dump keinen Parameter für ein Passwort vorsehen, zumindest hab ich in den Manpages dazu nichts entdeckt .

Ich hab zwar eine Nettes Buch (Jetzt lerne ich Shell Programmierung) vor mir liegen , aber leider bin ich damit nicht ganz in der Lage mein Problem zu lösen.



host=$1
port=$2
user=$3
db=$4
name=$5

/usr/bin/pg_restore -i -h $host -p $port -U $user -d
$db --disable-triggers -v "../backup/${name}db.backup"



Wenn ich das Script ausführe kommt nun eine nette kleine Abfrage nach einem Passwort , da das Script jedoch selbst automatisch aufgerufen werden soll ist das natürlich etwas störend weil das Script damit quasi abbricht .

Kann man der Passwortabfrage aus dem Shellsctipt noch ein Passwort übergeben ?

Nachtrag :

1 : Ich habe Version 8.0.3 von Postgre.
2 : Über Umgebunsvariablen kann ichs leider auch nicht lösen.



Environment
PGDATABASE
PGHOST
PGPORT
PGUSER
Default connection parameters.


Gruß Sono

peschmae
15-09-2005, 17:44
Eine Möglichkeit ist den Stdin des Programms von irgendwo (Datei oder so) statt der Tastatur zu füttern. Also sowas:

echo "passwort" | /usr/bin/pg_restore -i -h $host -p $port -U $user -d $db --disable-triggers -v "../backup/${name}db.backup"

Falls das nicht geht solltest du dir mal das Programm expect angucken - das ist recht gut für so Operationen geeignet - d.h. eigentlich hat es nicht wirklich einen anderen Zweck ;)

MfG Peschmä

sono
15-09-2005, 20:08
Danke für deine schnelle Hielfe .

Habs hinbekommen , allerdings jetzt erst mal doch über das passwort als Umgebungsvariable mit "export PGPASSWORD" obwohl das nicht mal in den Manpages steht , aber egal so lange es geht .

Aber das mit dem expect war ein guter Tip , das bringt mich jetzt bei ein paar anderen Scripten auch gleich weiter .

Gruß Sono