pg_dump command inside shell scripts

From: Elielson Fontanezi <ElielsonF(at)prodam(dot)sp(dot)gov(dot)br>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>, pgsql-admin <pgsql-admin(at)postgresql(dot)org>
Cc: Gerson Leite da Silva <gerson(dot)silva(at)prodam(dot)sp(dot)gov(dot)br>
Subject: pg_dump command inside shell scripts
Date: 2002-10-08 13:35:55
Message-ID: A799F7647794D311924A005004ACEA9708A246A4@cprodamibs249.prodam
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin pgsql-general

Hi Folks!

Again I need a help from you!

I have develop a shell script (seen below) to do dump and vaccum
automatically.
Once pg_dump command prompts for password, I changed the $PGDATA/*hba.conf
file
to identify Linux user which starts the shell script to avoid password
prompt.
But now I need change the $PGDATA/*hba.conf file as it was originally
and
face the password prompt again.

In shell script programming how do I can do to answer this prompt?

I have done something like this:

#> pd_dump -d zakal <<!
my_password
!

But without success!

Who can help me?

#---------------------------------------------------------------------------
--

#!/bin/sh

#
# Script de dump de banco da dados para PostgreSQL
#
# Written by: Elielson Fontanezi - 16.07.2002 #
#
# NOTA: Lembre-se sempre de verificar se o caminho
# apontado por $BKROOT exite, senão co cron não executará
#

PGHOME=/usr/local/pgsql
PGPATH=$PGHOME/bin
DUMPCMD=$PGPATH/pg_dump
VACUUMCMD=$PGPATH/vacuumdb

PGDB=$1

BKROOT=$HOME/backups

if [ ! -d ${BKROOT} ]; then
mkdir $BKROOT
if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "Erro no: ${ERR_VAL} na criação de ${BKROOT}" |\
mail -s "`hostname`: *** ERRO ***" elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi
fi

# Se o mes mudar, remova os diretorios
# do mes anterior

mes_atual=`date +%m`
for a in `find ${BKROOT} -print | grep -E "*[0-90-90-90-9]$"`
do
b=`echo ${a} | cut -d"-" -f 3`
if [ $mes_atual != $b ]; then
rm -rf ${a}
fi
done;
#
#

BKHOME=${BKROOT}/`date +%Y-%m-%d`

if [ ! -d ${BKHOME} ]; then
mkdir $BKHOME
if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "Erro no: ${ERR_VAL} na criação de ${BKHOME}" |\
mail -s "`hostname`: *** ERRO ***" elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi
fi

BKHOME=${BKHOME}/${PGDB}
if [ ! -d ${BKHOME} ]; then
mkdir $BKHOME
if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "Erro no: ${ERR_VAL} na criação de ${BKHOME}" |\
mail -s "`hostname`: *** ERRO ***" elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi
fi

LOG=${BKHOME}/${PGDB}.dumplog
ARQ=${BKHOME}/${PGDB}.ddl

###
# Parametros do pg_dump
###
# -v: verbose
# -Fp: caracter
# -Fc: pg_dump compressed format
# -Ft: tar
# -c: com drops
# -C: com DDL para criacao do banco
# -d: insercao com INSERT ou COPY sem ele
# -a: somente dados
# -s: DDL apenas
# -R: sem \connect
# -X: colocaca comando SET AUTHORIZATION COMMANDS para o usuario corrente.
###

echo "********** DDLs do banco <${PGDB}> **********" > ${LOG}

PARAM="-U ${USER} -Fp -v -s -c -X use-set-session-authorization"
${DUMPCMD} ${PARAM} ${PGDB} -f ${ARQ} >> ${LOG} 2>&1

if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "*** Erro no: ${ERR_VAL}" >> ${LOG}
echo "*** Comando: ${DUMPCMD} ${PARAM} ${PGDB} -f ${ARQ} >> ${LOG} 2>&1"
>> ${LOG}
cat ${LOG} | \
mail -s "`hostname`: Erro no deump DLL do banco ${PGDB}"
elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi

ARQ=${BKHOME}/${PGDB}.data

echo "********** ascii do banco <${PGDB}> **********" >> ${LOG}

PARAM="-U ${USER} -Fp -a -v -X use-set-session-authorization"
${DUMPCMD} ${PARAM} ${PGDB} -f ${ARQ} >> ${LOG} 2>&1

if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "*** Erro no: ${ERR_VAL}" >> ${LOG}
echo "*** Comando: ${DUMPCMD} ${PARAM} ${PGDB} -f ${ARQ} >> ${LOG} 2>&1"
>> ${LOG}
cat ${LOG} |\
mail -s "`hostname`: Erro no dump ASCII do banco ${PGDB}"
elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi

ARQ=${BKHOME}/${PGDB}.tar

echo "********** tar do banco <${PGDB}> **********" >> ${LOG}

PARAM="-U ${USER} -Ft -v -X use-set-session-authorization"
${DUMPCMD} ${PARAM} ${PGDB} -f ${ARQ} >> ${LOG} 2>&1

if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "*** Erro no: ${ERR_VAL}" >> ${LOG}
echo "*** Comando: ${DUMPCMD} ${PARAM} ${PGDB} -f ${ARQ} >> ${LOG} 2>&1"
>> ${LOG}
cat ${LOG} |\
mail -s "`hostname`: Erro no dump tar do banco ${PGDB}"
elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi

###
# Parametro de vaccum
###
# -d: dbname
# -z: Calculate statistics for use by the optimizer.
# -f: Perform "full" vacuuming
# -v: verbose
###

echo "********** vacuum de <${PGDB}> **********" >> ${LOG}

PARAM="-U ${USER} -z -v -f"
${VACUUMCMD} ${PARAM} -d ${PGDB} > ${LOG} 2>&1

if [ $? -ne 0 ]; then
ERR_VAL=$?
echo "*** Erro no: ${ERR_VAL}" >> ${LOG}
echo "ERRO: vacuumdb ${VACUUMCMD} ${PARAM} -d ${PGDB} > ${LOG} 2>&1" >>
${LOG}
cat ${LOG} |\
mail -s "`hostname`: Erro no vacuum do banco ${PGDB}"
elielsonf(at)prodam(dot)sp(dot)gov(dot)br
fi

..............................................
A Question...
Since before your sun burned hot in space
and before your race was born,
I have awaited a question.
Elielson Fontanezi
DBA Technical Support - PRODAM
Parque do Ibirapuera s/n - SP - BRAZIL
+55 11 5080 9493

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message David F. Skoll 2002-10-08 13:45:41 Re: pg_dump command inside shell scripts
Previous Message bon 2002-10-08 13:13:45 Two questions.

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2002-10-08 13:39:24 Re: PLTCL return_null crash...
Previous Message Erwan DUROSELLE 2002-10-08 13:34:07 Rép. : Re: Hot Backup