diff --git a/check_pg_streaming_replication b/check_pg_streaming_replication index baaa1cd..78e1a8e 100755 --- a/check_pg_streaming_replication +++ b/check_pg_streaming_replication @@ -19,11 +19,78 @@ PG_USER=postgres PSQL_BIN=/usr/bin/psql PG_MAIN=/var/lib/postgresql/9.1/main -RECOVERY_CONF=$PG_MAIN/recovery.conf +if [ -f /etc/redhat-release ] +then + PG_MAIN=/var/lib/pgsql/9.1/data +fi +RECOVERY_CONF_FILENAME=recovery.conf +RECOVERY_CONF="" PG_DEFAULT_PORT=5432 DEBUG=0 -[ "$1" == "-d" ] && DEBUG=1 + +function usage () { + cat << EOF +Usage : $0 [-d] [-h] [options] + -u pg_user Specify Postgres user (Default : $PG_USER) + -b psql_bin Specify psql binary path (Default : $PSQL_BIN) + -m pg_main Specify Postgres main directory path + (Default : $PG_MAIN) + -r recovery_conf Specify Postgres recovery configuration file path + (Default : $PG_MAIN/$RECOVERY_CONF_FILENAME) + -p pg_port Specify default Postgres master TCP port (Default : $PG_DEFAULT_PORT) + -d Debug mode + -h Show this message +EOF + exit 0 +} + +while getopts "hu:b:m:r:p:d" OPTION +do + case $OPTION in + u) + PG_USER=$OPTARG + ;; + b) + PSQL_BIN=$OPTARG + ;; + m) + PG_MAIN=$OPTARG + ;; + r) + RECOVERY_CONF=$OPTARG + ;; + p) + PG_DEFAULT_PORT=$OPTARG + ;; + d) + DEBUG=1 + ;; + h) + usage + ;; + \?) + echo -n "Unkown option" + usage + esac +done + +# Check PG_USER +[ -z "$PG_USER" ] && echo "UNKNOWN : Postgres user not specify" && exit 3 +id "$PG_USER" > /dev/null 2>&1 +[ $? -ne 0 ] && echo "UNKNOWN : Invalid Postgres user ($PG_USER)" && exit 3 + +# Check PSQL_BIN +[ ! -x "$PSQL_BIN" ] && echo "UNKNOWN : Invalid psql bin path ($PSQL_BIN)" && exit 3 + +# Check PG_MAIN +[ ! -d "$PG_MAIN/" ] && echo "UNKNOWN : Invalid Postgres main directory path ($PG_MAIN)" && exit 3 + +# Check RECOVERY_CONF +[ -z "$RECOVERY_CONF" ] && RECOVERY_CONF="$PG_MAIN/$RECOVERY_CONF_FILENAME" + +# Check PG_DEFAULT_PORT +[ $( echo "$PG_DEFAULT_PORT"|grep -c -E '^[0-9]*$' ) -ne 1 ] && "UNKNOWN : Postgres default master TCP port must be an integer." && exit 3 function psql_get () { echo "$1"|su - $PG_USER -c "$PSQL_BIN -t -P format=unaligned" @@ -36,6 +103,13 @@ function debug() { fi } +debug "Running options : +PG_USER = $PG_USER +PSQL_BIN = $PSQL_BIN +PG_MAIN = $PG_MAIN +RECOVERY_CONF = $RECOVERY_CONF +PG_DEFAULT_PORT = $PG_DEFAULT_PORT" + # Postgres is running ? if [ $DEBUG -eq 0 ] then