#!/bin/bash # Disables or Enables connections to specified database PORT="" USER="" usage() { echo "Usage: $0 -d [-p -U ]" echo Database name to disable/enable is required exit 1 } while getopts "d:p:U:u" OPT; do case "${OPT}" in d) DBNAME=$OPTARG ;; p) PORT="-p $OPTARG" ;; U) USER="-U $OPTARG" ;; u) usage ;; [?]) usage esac; done if [ "$DBNAME" = "" ] then usage exit 1 fi if [ $DBNAME == "postgres" ] then echo Disable of postgres is prohibited exit fi echo changing $DBNAME psql $PORT $USER -v ON_ERROR_STOP=on postgres <<_EOF_ SELECT datname, datallowconn FROM pg_database WHERE datname = '$DBNAME' ; UPDATE pg_database SET datallowconn = CASE WHEN datallowconn = TRUE THEN FALSE ELSE TRUE END WHERE datname = '$DBNAME' ; SELECT datname, datallowconn FROM pg_database WHERE datname = '$DBNAME' ; \echo Connect status for $DBNAME has been reversed _EOF_