# 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 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}')`" echo "-h $curhost -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:$PGPORT:$curdb:$curuser" "$HOME/.pgpass") -eq 0 ]; then # add the line to .pgpass echo "$curhost:$PGPORT:$curdb:$curuser:$curpw" >> "$HOME/.pgpass" elif [ $(grep -c "$curhost:$PGPORT:$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:$PGPORT:$curdb:$curuser" "$HOME/.pgpass.old" >> "$HOME/.pgpass" echo "$curhost:$PGPORT:$curdb:$curuser:$curpw" >> "$HOME/.pgpass" fi fi done < "$DBLIST"