From b57dc1b3a0b7e43739c60f3f317416b0f3aa793c Mon Sep 17 00:00:00 2001 From: Brian De Wolf Date: Tue, 15 Jan 2013 17:03:03 -0800 Subject: Add option to perform real login in check_oracle The Oracle plugin has no option for testing for a successful login. The closest option to this is --login, which uses a fixed set of credentials and expects to receive the logon failure error code. This patch adds an option called --connect. This option takes a full SID and returns success if it doesn't detect any error codes. With this, we can check that a database is allowing logins from valid credentials (and avoid filling up DB logs with failed authentications). diff --git a/plugins-scripts/check_oracle.sh b/plugins-scripts/check_oracle.sh index 664795e..2a8ab21 100755 --- a/plugins-scripts/check_oracle.sh +++ b/plugins-scripts/check_oracle.sh @@ -18,6 +18,7 @@ print_usage() { echo " $PROGNAME --tns " echo " $PROGNAME --db " echo " $PROGNAME --login " + echo " $PROGNAME --connect " echo " $PROGNAME --cache " echo " $PROGNAME --tablespace " echo " $PROGNAME --oranames " @@ -39,6 +40,8 @@ print_help() { echo " filesystem for sgadefORACLE_SID.dbf" echo "--login SID" echo " Attempt a dummy login and alert if not ORA-01017: invalid username/password" + echo "--connect SID" + echo " Attempt a login and alert if an ORA- error is returned" echo "--cache" echo " Check local database for library and buffer cache hit ratios" echo " ---> Requires Oracle user/password and SID specified." @@ -187,6 +190,18 @@ case "$cmd" in exit $STATE_CRITICAL fi ;; +--connect) + connectchk=`sqlplus $2 < /dev/null` + connectchk2=` echo $connectchk | grep -c ORA-` + if [ ${connectchk2} -eq 0 ] ; then + echo "OK - login successful" + exit $STATE_OK + else + connectchk3=` echo "$connectchk" | grep "ORA-" | head -1` + echo "CRITICAL - $connectchk3" + exit $STATE_CRITICAL + fi + ;; --cache) if [ ${5} -gt ${6} ] ; then echo "UNKNOWN - Warning level is less then Crit" -- cgit v0.10-9-g596f