# 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 [ "$DBTYPE" = "mysql" ]; then echo -n "3306" elif [ "$DBTYPE" = "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"