# Prepare db_backup to be run with parallelstarter:
# generate arglist from password file
# step through DBLIST and convert each line
# into a set of command line args for db_backup
# the default ports
function getdefault_dbport {
if [ "$curtype" = "mysql" ]; then
echo -n "3306"
elif [ "$curtype" = "postgresql" ]; then
echo -n "5432"
fi
}
if [ -e "$ARGLIST_FILE" ]; then
rm "$ARGLIST_FILE"
fi
while read dbinfo; do
# ignore comment and empty lines
if [ $(echo "$dbinfo" | egrep -c "^[ \t]*#.*$") -gt 0 ]; then
continue
fi
# ignore empty lines or malformed lines
if [ $(echo "$dbinfo" | sed 's/[^:]//g' | wc -m) -lt 4 ]; then
continue
fi
curhost="`echo $(echo "$dbinfo" | awk -F ' : ' '{print $1}')`"
curdb="`echo $(echo "$dbinfo" | awk -F ' : ' '{print $3}')`"
curuser="`echo $(echo "$dbinfo" | awk -F ' : ' '{print $4}')`"
curtype="`echo $(echo "$dbinfo" | awk -F ' : ' '{print $2}')`"
curpw="`echo $(echo "$dbinfo" | awk -F ' : ' '{print $5}')`"
curport="$(echo "$curhost" | sed -e "s/.*:\([0-9]\{1,\}\) *$/\1/")"
if [ "$curhost" = "$curport" ]; then
curport="$(getdefault_dbport)"
else
# remove port information from host string
curhost="$(echo "$curhost" | sed -e "s/\(.*\):[0-9]\{1,\} *$/\1/")"
fi
echo "-h $curhost -p $curport -D $curdb -u $curuser -c $DBLIST -t $curtype" >> "$ARGLIST_FILE"
# write .pgpass in case there is a PostgreSQL DB involved
if [ "$curtype" = "postgresql" ]; then
# see if password is already registered
if [ ! -e "$HOME/.pgpass" ]; then
touch "$HOME/.pgpass"
chmod 600 "$HOME/.pgpass"
fi
if [ $(grep -c "$curhost:$curport:$curdb:$curuser" "$HOME/.pgpass") -eq 0 ]; then
# add the line to .pgpass
echo "$curhost:$curport:$curdb:$curuser:$curpw" >> "$HOME/.pgpass"
elif [ $(grep -c "$curhost:$curport:$curdb:$curuser:$curpw" "$HOME/.pgpass") -eq 0 ]; then
# the pw has changed; replace the password with new value
mv "$HOME/.pgpass" "$HOME/.pgpass.old"
touch "$HOME/.pgpass"
chmod 600 "$HOME/.pgpass"
grep -v "$curhost:$curport:$curdb:$curuser" "$HOME/.pgpass.old" >> "$HOME/.pgpass"
echo "$curhost:$curport:$curdb:$curuser:$curpw" >> "$HOME/.pgpass"
fi
fi
done < "$DBLIST"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>