konto usunięte

Temat: shell - przekazanie znaków do powłoki

Chcę napisać prosty skrypt do backup-owania bazy danych (postgres). Skrypt będzie uruchamiany co jakiś czas z cron-a.
Problem polega na tym, że pg_dump za każdym razem prosi o podanie hasła (>Password: ...) (nie da się tego wyłączyć). Jak automatycznie przekazać to hasło z poziomu skryptu shell?

date_time=`date +'%Y-%m-%d_%H-%M-%S'`
pg_dump ... > "backup/db/${date_time}.sql"

Jak radzić sobie z innymi podobnymi sytuacjami?

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Łukasz Bandzarewicz:
Problem polega na tym, że pg_dump za każdym razem prosi o podanie hasła (>Password: ...) (nie da się tego wyłączyć).

Da się ...

Add a pg_hba.conf entry for the user that should be allowed to dump the database, make it a postgres super user, let it use ident auth on the local socket, use a local connection as that user to dump the database.

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Krzysztof P.:
Łukasz Bandzarewicz:
Problem polega na tym, że pg_dump za każdym razem prosi o podanie hasła (>Password: ...) (nie da się tego wyłączyć).

Da się ...

Add a pg_hba.conf entry for the user that should be allowed to dump the database, make it a postgres super user, let it use ident auth on the local socket, use a local connection as that user to dump the database.

Obawiam się, że takie rozwiązanie nie wchodzi w rachubę.

pg_dump był raczej przykładem, jak sobie radzić w innych sytuacjach tego typu? tj. chcę przekazać ze skryptu jakieś znaki do polecania powłoki.

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Łukasz Bandzarewicz:
Obawiam się, że takie rozwiązanie nie wchodzi w rachubę.

pg_dump był raczej przykładem, jak sobie radzić w innych sytuacjach tego typu? tj. chcę przekazać ze skryptu jakieś znaki do polecania powłoki.

Są narzędzia, które zostały stworzone do tego celu. Np. expect - http://en.wikipedia.org/wiki/Expect
Adrian Czerniak

Adrian Czerniak Administrator
Systemów Uniksowych

Temat: shell - przekazanie znaków do powłoki

W tym konkretnym wypadku można użyć pliku ~/.pgpass:
http://www.postgresql.org/docs/8.3/interactive/libpq-p...

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Wojtek Bojdoł:

Są narzędzia, które zostały stworzone do tego celu. Np. expect - http://en.wikipedia.org/wiki/Expect

W czystym shell-u naprawdę nie da się tego zrobić? :/
Chodzi mi tylko o wysłanie do powłoki kilku znaków i ENTER na końcu, żadne fajerwerki ;)

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Łukasz Bandzarewicz:
Wojtek Bojdoł:

Są narzędzia, które zostały stworzone do tego celu. Np. expect - http://en.wikipedia.org/wiki/Expect

W czystym shell-u naprawdę nie da się tego zrobić? :/
Chodzi mi tylko o wysłanie do powłoki kilku znaków i ENTER na
końcu, żadne fajerwerki ;)

Co to jest "czysty shell"? Tcsh? Bash?
Jeśli sed'a i awk'a traktujesz jako czystego shella to proponuje ich użyć. Będzie może toporne, ale zadziała.

ps.
Chodzi Ci tylko o wysłanie do powłoki kilku znaków i entera PO TYM, jak program zapyta o hasło. Możesz użyć funkcji czasu (sleep 10) lub analizy tekstu (expect/awk/coś innego).

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Hej,
nie znam sie na postgresie, ale chodzi ci o coś takiego?
cat gl.sh
#! /bin/sh

pass="12121212"

echo ${pass} | xargs ./gl2.sh

# EOF

cat gl2.sh
#! /bin/sh

echo "Parametr: ${1}"

# EOF

./gl.sh
Parametr: 12121212
>

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Piotr Jasiukajtis:
cat gl.sh
#! /bin/sh

pass="12121212"

echo ${pass} | xargs ./gl2.sh

# EOF

cat gl2.sh
#! /bin/sh

echo "Parametr: ${1}"

dodałbym tu: cat -

konto usunięte

Temat: shell - przekazanie znaków do powłoki

Wojtek Bojdoł:

A od kiedy to w pytaniu o hasło (np. w telnet) jest używany stdin ? :)

Cytat z wiki:

In raw mode, text passes directly from the terminal or PTY (a device node that a program wishing to emulate a terminal binds to) to the TTY device.Krzysztof P. edytował(a) ten post dnia 23.07.08 o godzinie 18:25
Tomasz Kapelański

Tomasz Kapelański Administrator IT,
Absysco Sp. z o. o.

Temat: shell - przekazanie znaków do powłoki

Łukasz Bandzarewicz:
Wojtek Bojdoł:

Są narzędzia, które zostały stworzone do tego celu. Np. expect - http://en.wikipedia.org/wiki/Expect

W czystym shell-u naprawdę nie da się tego zrobić? :/
Chodzi mi tylko o wysłanie do powłoki kilku znaków i ENTER na końcu, żadne fajerwerki ;)

expect na przykładzie: su -

laczo@shrek:~$ cat speak
spawn su -
expect "Password: "
send "haslozywymtextem\n"
interact
laczo@shrek:~$
laczo@shrek:~$ expect speak
spawn su -
Password:
root@shrek:~#

oczywiscie uzywanie skryptów dla su - i to w przypadku roota
jest dość mało roztropne :)
Rafal Lorenc

Rafal Lorenc Kierownik ds nadzoru
systemu, nazwa.pl

Temat: shell - przekazanie znaków do powłoki

Można i chyba najprościej tak:

PGPASSWORD='XXXX' $path/bin/pg_dump

Następna dyskusja:

Shell In A Box




Wyślij zaproszenie do