Code

Initial revision
[nagiosplug.git] / plugins-scripts / check_oracle.sh
1 #!/bin/sh
2 #
3 # latigid010@yahoo.com
4 # 01/06/2000
5 #
6 #  This Nagios plugin was created to check remote or local TNS
7 #  status and check local Database status.
8 #
9 #  Add the following lines to your object config file (i.e. commands.cfg)
10 #         command[check-tns]=/usr/local/nagios/libexec/check_ora 1 $ARG$
11 #         command[check-oradb]=/usr/local/nagios/libexec/check_ora 2 $ARG$
12 #
13 #
14 # Usage: 
15 #      To check TNS Status:  ./check_ora 1 <Oracle Sid or Hostname/IP address>
16 #  To Check local database:  ./check_ora 2 <ORACLE_SID>
17 #
18 # I have the script checking for the Oracle PMON process and 
19 # the sgadefORACLE_SID.dbf file.
20
21 #
22 # If you have any problems check that you have the $ORACLE_HOME
23 # enviroment variable set, have $ORACLE_HOME/bin in your PATH, and
24 # dont forget about your tnsnames.ora file.  when checking Local
25 # Database status your ORACLE_SID is case sensitive.
26 #
28 PROGNAME=`basename $0`
29 PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
30 REVISION=`echo '$Revision$' | sed -e 's/[^0-9.]//g'`
32 . $PROGPATH/utils.sh
35 print_usage() {
36   echo "Usage:"
37   echo "  $PROGNAME --tns <Oracle Sid or Hostname/IP address>"
38   echo "  $PROGNAME --db <ORACLE_SID>"
39   echo "  $PROGNAME --help"
40   echo "  $PROGNAME --version"
41 }
43 print_help() {
44         print_revision $PROGNAME $REVISION
45         echo ""
46         print_usage
47         echo ""
48         echo "Check remote or local TNS status and check local Database status"
49         echo ""
50   echo "--tns=SID/IP Address"
51   echo "   Check remote TNS server"
52   echo "--db=SID"
53   echo "   Check local database (search /bin/ps for PMON process and check"
54         echo "   filesystem for sgadefORACLE_SID.dbf"
55   echo "--help"
56         echo "   Print this help screen"
57   echo "--version"
58         echo "   Print version and license information"
59         echo ""
60   echo "If the plugin doesn't work, check that the $ORACLE_HOME environment"
61         echo "variable is set, that $ORACLE_HOME/bin is in your PATH, and the"
62   echo "tnsnames.ora file is locatable and is properly configured."
63   echo ""
64   echo "When checking Local Database status your ORACLE_SID is case sensitive."
65   echo ""
66         support
67 }
69 case "$1" in
70 1)
71     cmd='--tns'
72     ;;
73 2)
74     cmd='--db'
75     ;;
76 *)
77     cmd="$1"
78     ;;
79 esac
81 case "$cmd" in
82 --tns)
83     export tnschk=` tnsping $2`
84     export tnschk2=` echo  $tnschk | grep -c OK`
85     export tnschk3=` echo $tnschk | cut -d\( -f7 | sed y/\)/" "/`
86     if [ ${tnschk2} -eq 1 ] ; then 
87         echo "OK - reply time ${tnschk3} from $2"
88         exit 0
89     else
90         echo "No TNS Listener on $2"
91         exit $STATE_CRITICAL
92     fi
93     ;;
94 --db)
95     export pmonchk=`ps -ef | grep -v grep | grep ${2} | grep -c pmon`
96     if [ -e $ORACLE_HOME/dbs/sga*${2}* ] ; then
97         if [ ${pmonchk} -eq 1 ] ; then
98     export utime=`ls -la $ORACLE_HOME/dbs/sga*$2* | cut -c 43-55`
99             echo "${2} OK - running since ${utime}"
100             exit $STATE_OK
101         fi
102     else
103         echo "${2} Database is DOWN"
104         exit $STATE_CRITICAL
105     fi
106     ;;
107 --help)
108                 print_help
109     exit $STATE_OK
110     ;;
111 -h)
112                 print_help
113     exit $STATE_OK
114     ;;
115 --version)
116                 print_revision $PLUGIN $REVISION
117     exit $STATE_OK
118     ;;
119 -V)
120                 print_revision $PLUGIN $REVISION
121     exit $STATE_OK
122     ;;
123 *)
124     print_usage
125                 exit $STATE_UNKNOWN
126 esac