64 lines
1017 B
Bash
64 lines
1017 B
Bash
#!/bin/bash
|
|
# Disables or Enables connections to specified database
|
|
|
|
PORT=""
|
|
USER=""
|
|
|
|
usage() {
|
|
echo "Usage: $0 -d <dbname> [-p <port> -U <user>]"
|
|
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_
|
|
|