diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_ldap.c | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/plugins/check_ldap.c b/plugins/check_ldap.c index 6491e5ba..ac11c58f 100644 --- a/plugins/check_ldap.c +++ b/plugins/check_ldap.c | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | *****************************************************************************/ | 21 | *****************************************************************************/ |
| 22 | 22 | ||
| 23 | const char *progname = "check_ldap"; | 23 | const char *progname = "check_ldap"; |
| 24 | #define REVISION "$Revision$" | 24 | const char *revision = "$Revision$"; |
| 25 | 25 | ||
| 26 | #include "config.h" | 26 | #include "config.h" |
| 27 | #include "common.h" | 27 | #include "common.h" |
| @@ -31,7 +31,10 @@ const char *progname = "check_ldap"; | |||
| 31 | #include <lber.h> | 31 | #include <lber.h> |
| 32 | #include <ldap.h> | 32 | #include <ldap.h> |
| 33 | 33 | ||
| 34 | #define UNKNOWN -1 | 34 | enum { |
| 35 | UNDEFINED = -1, | ||
| 36 | DEFAULT_PORT = 389 | ||
| 37 | }; | ||
| 35 | 38 | ||
| 36 | int process_arguments (int, char **); | 39 | int process_arguments (int, char **); |
| 37 | int validate_arguments (void); | 40 | int validate_arguments (void); |
| @@ -40,9 +43,13 @@ void print_usage (void); | |||
| 40 | 43 | ||
| 41 | char ld_defattr[] = "(objectclass=*)"; | 44 | char ld_defattr[] = "(objectclass=*)"; |
| 42 | char *ld_attr = ld_defattr; | 45 | char *ld_attr = ld_defattr; |
| 43 | char *ld_host = NULL, *ld_base = NULL, *ld_passwd = NULL, *ld_binddn = NULL; | 46 | char *ld_host = ""; |
| 44 | unsigned int ld_port = 389; | 47 | char *ld_base = ""; |
| 45 | int warn_time = UNKNOWN, crit_time = UNKNOWN; | 48 | char *ld_passwd = NULL; |
| 49 | char *ld_binddn = NULL; | ||
| 50 | unsigned int ld_port = DEFAULT_PORT; | ||
| 51 | int warn_time = UNDEFINED; | ||
| 52 | int crit_time = UNDEFINED; | ||
| 46 | 53 | ||
| 47 | int | 54 | int |
| 48 | main (int argc, char *argv[]) | 55 | main (int argc, char *argv[]) |
| @@ -98,19 +105,19 @@ main (int argc, char *argv[]) | |||
| 98 | /* get the finish time */ | 105 | /* get the finish time */ |
| 99 | time (&time1); | 106 | time (&time1); |
| 100 | 107 | ||
| 101 | /* calcutate the elapsed time */ | 108 | /* calcutate the elapsed time and compare to thresholds */ |
| 102 | t_diff = time1 - time0; | 109 | t_diff = time1 - time0; |
| 103 | 110 | ||
| 104 | /* check if warn_time or crit_time was exceeded */ | 111 | if (crit_time!=UNDEFINED && t_diff>=crit_time) { |
| 105 | if ((t_diff >= warn_time) && (t_diff < crit_time)) { | ||
| 106 | printf ("LDAP warning - %i seconds response time\n", t_diff); | ||
| 107 | return STATE_WARNING; | ||
| 108 | } | ||
| 109 | if (t_diff >= crit_time) { | ||
| 110 | printf ("LDAP critical - %i seconds response time\n", t_diff); | 112 | printf ("LDAP critical - %i seconds response time\n", t_diff); |
| 111 | return STATE_CRITICAL; | 113 | return STATE_CRITICAL; |
| 112 | } | 114 | } |
| 113 | 115 | ||
| 116 | if (warn_time!=UNDEFINED && t_diff>=warn_time) { | ||
| 117 | printf ("LDAP warning - %i seconds response time\n", t_diff); | ||
| 118 | return STATE_WARNING; | ||
| 119 | } | ||
| 120 | |||
| 114 | /* print out the result */ | 121 | /* print out the result */ |
| 115 | printf ("LDAP ok - %i seconds response time\n", t_diff); | 122 | printf ("LDAP ok - %i seconds response time\n", t_diff); |
| 116 | 123 | ||
| @@ -165,11 +172,11 @@ process_arguments (int argc, char **argv) | |||
| 165 | print_help (); | 172 | print_help (); |
| 166 | exit (STATE_OK); | 173 | exit (STATE_OK); |
| 167 | case 'V': /* version */ | 174 | case 'V': /* version */ |
| 168 | print_revision (progname, REVISION); | 175 | print_revision (progname, revision); |
| 169 | exit (STATE_OK); | 176 | exit (STATE_OK); |
| 170 | case 't': /* timeout period */ | 177 | case 't': /* timeout period */ |
| 171 | if (!is_intnonneg (optarg)) | 178 | if (!is_intnonneg (optarg)) |
| 172 | usage2 ("timeout interval must be an integer", optarg); | 179 | usage2 ("timeout interval must be a positive integer", optarg); |
| 173 | socket_timeout = atoi (optarg); | 180 | socket_timeout = atoi (optarg); |
| 174 | break; | 181 | break; |
| 175 | case 'H': | 182 | case 'H': |
| @@ -212,14 +219,15 @@ process_arguments (int argc, char **argv) | |||
| 212 | int | 219 | int |
| 213 | validate_arguments () | 220 | validate_arguments () |
| 214 | { | 221 | { |
| 215 | if (ld_host[0] == 0 || | 222 | if (strlen(ld_host) == 0) |
| 216 | ld_base[0] == 0 || | 223 | usage ("please specify the host name\n"); |
| 217 | ld_port == UNKNOWN || warn_time == UNKNOWN || crit_time == UNKNOWN) { | 224 | |
| 218 | return ERROR; | 225 | if (strlen(ld_base) == 0) |
| 219 | } | 226 | usage ("please specify the LDAP base\n"); |
| 220 | else { | 227 | |
| 228 | else | ||
| 221 | return OK; | 229 | return OK; |
| 222 | } | 230 | |
| 223 | } | 231 | } |
| 224 | 232 | ||
| 225 | 233 | ||
| @@ -228,7 +236,7 @@ validate_arguments () | |||
| 228 | void | 236 | void |
| 229 | print_help () | 237 | print_help () |
| 230 | { | 238 | { |
| 231 | print_revision (progname, REVISION); | 239 | print_revision (progname, revision); |
| 232 | printf | 240 | printf |
| 233 | ("Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n" | 241 | ("Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n" |
| 234 | "License: GPL\n" "\n"); | 242 | "License: GPL\n" "\n"); |
| @@ -241,10 +249,10 @@ print_help () | |||
| 241 | "\t-b [--base] ... ldap base (eg. ou=my unit, o=my org, c=at)\n" | 249 | "\t-b [--base] ... ldap base (eg. ou=my unit, o=my org, c=at)\n" |
| 242 | "\t-D [--bind] ... ldap bind DN (if required)\n" | 250 | "\t-D [--bind] ... ldap bind DN (if required)\n" |
| 243 | "\t-P [--pass] ... ldap password (if required)\n" | 251 | "\t-P [--pass] ... ldap password (if required)\n" |
| 244 | "\t-p [--port] ... ldap port (normaly 389)\n" | 252 | "\t-p [--port] ... ldap port (default: %d)\n" |
| 245 | "\t-w [--warn] ... time in secs. - if the exceeds <warn> the STATE_WARNING will be returned\n" | 253 | "\t-w [--warn] ... time in secs. - if the exceeds <warn> the STATE_WARNING will be returned\n" |
| 246 | "\t-c [--crit] ... time in secs. - if the exceeds <crit> the STATE_CRITICAL will be returned\n" | 254 | "\t-c [--crit] ... time in secs. - if the exceeds <crit> the STATE_CRITICAL will be returned\n" |
| 247 | "\n"); | 255 | "\n", DEFAULT_PORT); |
| 248 | } | 256 | } |
| 249 | 257 | ||
| 250 | 258 | ||
| @@ -252,7 +260,7 @@ void | |||
| 252 | print_usage () | 260 | print_usage () |
| 253 | { | 261 | { |
| 254 | printf | 262 | printf |
| 255 | ("Usage: %s -H <host> -b <base_dn> -p <port> [-a <attr>] [-D <binddn>]\n" | 263 | ("Usage: %s -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]\n" |
| 256 | " [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]\n" | 264 | " [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]\n" |
| 257 | "(Note: all times are in seconds.)\n", progname); | 265 | "(Note: all times are in seconds.)\n", progname); |
| 258 | } | 266 | } |
