diff options
Diffstat (limited to 'plugins/check_hpjd.c')
| -rw-r--r-- | plugins/check_hpjd.c | 112 |
1 files changed, 34 insertions, 78 deletions
diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c index 9d8fae2b..56384657 100644 --- a/plugins/check_hpjd.c +++ b/plugins/check_hpjd.c | |||
| @@ -1,50 +1,5 @@ | |||
| 1 | /****************************************************************************** | 1 | /****************************************************************************** |
| 2 | * | 2 | * |
| 3 | * CHECK_HPJD.C | ||
| 4 | * | ||
| 5 | * Program: HP printer plugin for Nagios | ||
| 6 | * License: GPL | ||
| 7 | * Copyright (c) 1999 Ethan Galstad (nagios@nagios.org) | ||
| 8 | * | ||
| 9 | * Last Modified: $Date$ | ||
| 10 | * | ||
| 11 | * Command line: CHECK_HPJD <ip_address> [community] | ||
| 12 | * | ||
| 13 | * Description: | ||
| 14 | * | ||
| 15 | * This plugin will attempt to check the status of an HP printer. The | ||
| 16 | * printer must have a JetDirect card installed and TCP/IP protocol | ||
| 17 | * stack enabled. This plugin has only been tested on a few printers | ||
| 18 | * and may not work well on all models of JetDirect cards. Multiple | ||
| 19 | * port JetDirect devices must have an IP address assigned to each | ||
| 20 | * port in order to be monitored. | ||
| 21 | * | ||
| 22 | * Dependencies: | ||
| 23 | * | ||
| 24 | * This plugin used the 'snmpget' command included with the UCD-SNMP | ||
| 25 | * package. If you don't have the package installed you will need to | ||
| 26 | * download it from http://ucd-snmp.ucdavis.edu before you can use | ||
| 27 | * this plugin. | ||
| 28 | * | ||
| 29 | * Return Values: | ||
| 30 | * | ||
| 31 | * UNKNOWN = The plugin could not read/process the output from the printer | ||
| 32 | * OK = Printer looks normal | ||
| 33 | * WARNING = Low toner, paper jam, intervention required, paper out, etc. | ||
| 34 | * CRITICAL = The printer could not be reached (it's probably turned off) | ||
| 35 | * | ||
| 36 | * Acknowledgements: | ||
| 37 | * | ||
| 38 | * The idea for the plugin (as well as some code) were taken from Jim | ||
| 39 | * Trocki's pinter alert script in his "mon" utility, found at | ||
| 40 | * http://www.kernel.org/software/mon | ||
| 41 | * | ||
| 42 | * Notes: | ||
| 43 | * 'JetDirect' is copyrighted by Hewlett-Packard. | ||
| 44 | * HP, please don't sue me... :-) | ||
| 45 | * | ||
| 46 | * License Information: | ||
| 47 | * | ||
| 48 | * This program is free software; you can redistribute it and/or modify | 3 | * This program is free software; you can redistribute it and/or modify |
| 49 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 50 | * the Free Software Foundation; either version 2 of the License, or | 5 | * the Free Software Foundation; either version 2 of the License, or |
| @@ -66,8 +21,26 @@ | |||
| 66 | #include "utils.h" | 21 | #include "utils.h" |
| 67 | 22 | ||
| 68 | const char *progname = "check_hpjd"; | 23 | const char *progname = "check_hpjd"; |
| 69 | #define REVISION "$Revision$" | 24 | const char *revision = "$Revision$"; |
| 70 | #define COPYRIGHT "2000-2002" | 25 | const char *authors = "Nagios Plugin Development Team"; |
| 26 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | ||
| 27 | const char *copyright = "2000-2003"; | ||
| 28 | |||
| 29 | const char *summary = "\ | ||
| 30 | This plugin tests the STATUS of an HP printer with a JetDirect card.\n\ | ||
| 31 | Net-snmp must be installed on the computer running the plugin.\n\n"; | ||
| 32 | |||
| 33 | const char *option_summary = "-H host [-C community]\n"; | ||
| 34 | |||
| 35 | const char *options = "\ | ||
| 36 | -H, --hostname=STRING or IPADDRESS\n\ | ||
| 37 | Check server on the indicated host\n\ | ||
| 38 | -C, --community=STRING\n\ | ||
| 39 | The SNMP community name (default=%s)\n\ | ||
| 40 | -h, --help\n\ | ||
| 41 | Print detailed help screen\n\ | ||
| 42 | -V, --version\n\ | ||
| 43 | Print version information\n\n"; | ||
| 71 | 44 | ||
| 72 | #define HPJD_LINE_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.1" | 45 | #define HPJD_LINE_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.1" |
| 73 | #define HPJD_PAPER_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.2" | 46 | #define HPJD_PAPER_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.2" |
| @@ -425,7 +398,7 @@ process_arguments (int argc, char **argv) | |||
| 425 | community = strscpy (community, optarg); | 398 | community = strscpy (community, optarg); |
| 426 | break; | 399 | break; |
| 427 | case 'V': /* version */ | 400 | case 'V': /* version */ |
| 428 | print_revision (progname, REVISION); | 401 | print_revision (progname, revision); |
| 429 | exit (STATE_OK); | 402 | exit (STATE_OK); |
| 430 | case 'h': /* help */ | 403 | case 'h': /* help */ |
| 431 | print_help (); | 404 | print_help (); |
| @@ -469,60 +442,43 @@ validate_arguments (void) | |||
| 469 | void | 442 | void |
| 470 | print_help (void) | 443 | print_help (void) |
| 471 | { | 444 | { |
| 472 | print_revision (progname, REVISION); | 445 | print_revision (progname, revision); |
| 473 | printf | 446 | printf ("Copyright (c) %s %s\n\t<%s>\n\n", copyright, authors, email); |
| 474 | ("Copyright (c) 2000 Ethan Galstad/Karl DeBisschop\n\n" | 447 | printf (summary); |
| 475 | "This plugin tests the STATUS of an HP printer with a JetDirect card.\n" | ||
| 476 | "Net-snmp must be installed on the computer running the plugin.\n\n"); | ||
| 477 | print_usage (); | 448 | print_usage (); |
| 478 | printf | 449 | printf ("\nOptions:\n"); |
| 479 | ("\nOptions:\n" | 450 | printf (options, DEFAULT_COMMUNITY); |
| 480 | " -H, --hostname=STRING or IPADDRESS\n" | ||
| 481 | " Check server on the indicated host\n" | ||
| 482 | " -C, --community=STRING\n" | ||
| 483 | " The SNMP community name (default=%s)\n" | ||
| 484 | " -h, --help\n" | ||
| 485 | " Print detailed help screen\n" | ||
| 486 | " -V, --version\n" " Print version information\n\n",DEFAULT_COMMUNITY); | ||
| 487 | support (); | 451 | support (); |
| 488 | } | 452 | } |
| 489 | 453 | ||
| 490 | |||
| 491 | |||
| 492 | |||
| 493 | |||
| 494 | void | 454 | void |
| 495 | print_usage (void) | 455 | print_usage (void) |
| 496 | { | 456 | { |
| 497 | printf | 457 | printf ("\ |
| 498 | ("Usage: %s -H host [-C community]\n" | 458 | Usage:\n\ |
| 499 | " %s --help\n" | 459 | %s %s\n\ |
| 500 | " %s --version\n", progname, progname, progname); | 460 | %s (-h | --help) for detailed help\n\ |
| 461 | %s (-V | --version) for version information\n", | ||
| 462 | progname, option_summary, progname, progname); | ||
| 501 | } | 463 | } |
| 502 | 464 | ||
| 503 | 465 | ||
| 504 | /* | 466 | /* |
| 505 | if(argc<2||argc>3){ | 467 | if(argc<2||argc>3){ |
| 506 | printf("Incorrect number of arguments supplied\n"); | 468 | printf("Incorrect number of arguments supplied\n"); |
| 507 | printf("\n"); | ||
| 508 | print_revision(argv[0],"$Revision$"); | 469 | print_revision(argv[0],"$Revision$"); |
| 509 | printf("Copyright (c) 1999 Ethan Galstad (nagios@nagios.org)\n"); | 470 | printf("Copyright (c) 1999 Ethan Galstad (nagios@nagios.org)\n"); |
| 510 | printf("License: GPL\n"); | 471 | printf("License: GPL\n"); |
| 511 | printf("\n"); | ||
| 512 | printf("Usage: %s <ip_address> [community]\n",argv[0]); | 472 | printf("Usage: %s <ip_address> [community]\n",argv[0]); |
| 513 | printf("\n"); | ||
| 514 | printf("Note:\n"); | 473 | printf("Note:\n"); |
| 515 | printf(" <ip_address> = The IP address of the JetDirect card\n"); | 474 | printf(" <ip_address> = The IP address of the JetDirect card\n"); |
| 516 | printf(" [community] = An optional community string used for SNMP communication\n"); | 475 | printf(" [community] = An optional community string used for SNMP communication\n"); |
| 517 | printf(" with the JetDirect card. The default is 'public'.\n"); | 476 | printf(" with the JetDirect card. The default is 'public'.\n"); |
| 518 | printf("\n"); | ||
| 519 | return STATE_UNKNOWN; | 477 | return STATE_UNKNOWN; |
| 520 | } | 478 | } |
| 521 | 479 | // get the IP address of the JetDirect device | |
| 522 | /* get the IP address of the JetDirect device */ | ||
| 523 | strcpy(address,argv[1]); | 480 | strcpy(address,argv[1]); |
| 524 | 481 | // get the community name to use for SNMP communication | |
| 525 | /* get the community name to use for SNMP communication */ | ||
| 526 | if(argc>=3) | 482 | if(argc>=3) |
| 527 | strcpy(community,argv[2]); | 483 | strcpy(community,argv[2]); |
| 528 | else | 484 | else |
