diff options
author | Subhendu Ghosh <sghosh@users.sourceforge.net> | 2005-06-01 19:41:01 +0000 |
---|---|---|
committer | Subhendu Ghosh <sghosh@users.sourceforge.net> | 2005-06-01 19:41:01 +0000 |
commit | bba4957fb2a22445c398a462fa819eccec9e3fab (patch) | |
tree | 90f9530dd9451b50ba3ddf4c9f1846074902b942 /plugins/check_snmp.c | |
parent | 3f520e56e7c38c28cd230a4956b93624ad1237bd (diff) | |
download | monitoring-plugins-bba4957fb2a22445c398a462fa819eccec9e3fab.tar.gz |
only load mibs if needed or specified - patch 1212395
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1187 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/check_snmp.c')
-rw-r--r-- | plugins/check_snmp.c | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index 728d692a..97c86a3a 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c @@ -121,7 +121,9 @@ int retries = 0; unsigned long eval_method[MAX_OIDS]; char *delimiter; char *output_delim; -char *miblist; +char *miblist = NULL; +int needmibs = FALSE; + int main (int argc, char **argv) @@ -158,7 +160,7 @@ main (int argc, char **argv) output = strdup (""); delimiter = strdup (" = "); output_delim = strdup (DEFAULT_OUTPUT_DELIMITER); - miblist = strdup (DEFAULT_MIBLIST); + /* miblist = strdup (DEFAULT_MIBLIST); */ timeout_interval = DEFAULT_TIMEOUT; retries = DEFAULT_RETRIES; @@ -510,6 +512,15 @@ process_arguments (int argc, char **argv) retries = atoi(optarg); break; case 'o': /* object identifier */ + if ( strspn( optarg, "0123456789." ) != strlen( optarg ) ) { + /* + * we have something other than digits and periods, so we + * have a mib variable, rather than just an SNMP OID, so + * we have to actually read the mib files + */ + needmibs = TRUE; + } + for (ptr = optarg; (ptr = index (ptr, ',')); ptr++) ptr[0] = ' '; /* relpace comma with space */ for (ptr = optarg; (ptr = index (ptr, ' ')); ptr++) @@ -627,6 +638,8 @@ process_arguments (int argc, char **argv) if (community == NULL) community = strdup (DEFAULT_COMMUNITY); + + return validate_arguments (); } @@ -640,13 +653,11 @@ process_arguments (int argc, char **argv) <para>&PROTO_validate_arguments;</para> -<para>Given a database name, this function returns TRUE if the string -is a valid PostgreSQL database name, and returns false if it is -not.</para> +<para>Checks to see if the default miblist needs to be loaded. Also verifies +the authentication and authorization combinations based on protocol version +selected.</para> -<para>Valid PostgreSQL database names are less than &NAMEDATALEN; -characters long and consist of letters, numbers, and underscores. The -first character cannot be a number, however.</para> +<para></para> </sect3> -@@ @@ -657,6 +668,15 @@ first character cannot be a number, however.</para> int validate_arguments () { + /* check whether to load locally installed MIBS (CPU/disk intensive) */ + if (miblist == NULL) { + if ( needmibs == TRUE ) { + miblist = strdup (DEFAULT_MIBLIST); + }else{ + miblist = "''"; /* don't read any mib files for numeric oids */ + } + } + /* Need better checks to verify seclevel and authproto choices */ @@ -913,9 +933,11 @@ Check status of remote machines and obtain sustem information via SNMP\n\n")); /* OID Stuff */ printf (_("\ -o, --oid=OID(s)\n\ - Object identifier(s) whose value you wish to query\n\ + Object identifier(s) or SNMP variables whose value you wish to query\n\ -m, --miblist=STRING\n\ - List of MIBS to be loaded (default = ALL)\n -d, --delimiter=STRING\n\ + List of MIBS to be loaded (default = none if using numeric oids or 'ALL'\n\ + for symbolic oids.)\n\ + -d, --delimiter=STRING\n\ Delimiter to use when parsing returned data. Default is \"%s\"\n\ Any data on the right hand side of the delimiter is considered\n\ to be the data that should be used in the evaluation.\n"), DEFAULT_DELIMITER); |