Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
SNMP Printer Check Popular
- Nagios 3.x
- Nagios 4.x
File | Description |
---|---|
check_snmp_printer | Version 3.141592 Script |
check_snmp_printer | Version 4.0 Script |
check_snmp_printer_versions.txt | Version History |
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
Originally based on Monitoring Solutions' check_snmp_printer, this provides friendly output, quick execution and thorough pre-flight checking.
---> IMPORTANT NOTE: Because snmp v3 checking uses -x for selecting a privacy protocol, -x is no longer the option for passing a check type. Instead, I've changed it to the more sensible -t option. This means your service command definitions need to be updated before you can use this plugin!!!
I liked the original plugin but wanted to be able to report the status of all consumables. For some devices this output can get huge. When only 1 component is empty, it becomes a challenge to find what needs to be replaced in the output. So this script was born.
I added checks for user input and better feedback for improper parameters. The same goes for SNMP status - before any code is executed, this is tested.
Usage for SNMP v1/2c:
check-snmp_printer -H {host/IP} -t {type of check} [-C {SNMP community}] [-S] [-w] [-c]
Usage for SNMP v3:
check-snmp_printer -v 3 -H {host/IP} -t {type of check} -u {user} -x {protocol} -X {password} -a {protocol} -A {password} -l {security mode} [-S] [-w] [-c]
Check type can be one of the following:
CONSUM {"string" | TEST | ALL}
DEVICE
DISPLAY
MESSAGES
MODEL
PAGECOUNT
STATUS
TRAY {number(s) | TEST | ALL}
VERSION
The CONSUM option gives results for all consumable names that match the string passed. For instance, you can pass "CONSUM Toner" and see all toner levels (no staple cartridges or imaging units). Similarly, "CONSUM Black" will show you the Black imaging unit and Black toner levels all at once. The ALL option gives all consumable status at once, and TEST will show you which CONSUMABLES can be monitored.
CONSUMX reports on consumables that match the eXact string passed to it. This helps alleviate problems when a "unique" string is not possible. For example, "CONSUMX Black Toner" would give an error unless the FULL description of the consumable (from a CONSUM TEST) is "Black Toner". Any consumable named "Black Toner1" or "Black Toner Cartridge" would be overlooked.
TRAY can be passed a number or list of numbers (comma-separated) as a parameter. The ALL parameter reports all tray statuses and TEST lets you know which trays the device has. In addition to generic status, the tray function tries to calculate paper remaining as a % of capacity (if possible), although this only works as good as the sensors on the device (and often only returns values at fixed intervals, such as 25%, 50%, 75%, etc.)
DEVICE, DISPLAY, MESSAGES, MODEL and STATUS report information about the printer's hardware devices, physical display, event log messages, model/serial or overall status (respectively).
If you want the output for consumables to contain multiple lines, pass the following argument:
-S "n"
Then you need to edit your service notifications. Just after the $SERVICEOUTPUT$ macro, you will need to add "n$LONGSERVICEOUTPUT$". E-mails will finally contain lines 2 and up of the output.
Please provide comments with your rating so I can know how to help you or what might be wrong with the plugin.
I have a little problem. My commands.cfg I add:
#'check_printer' command definition
define command{
command_name check_printer
command_line $USER1$/check_printer -H $HOSTADDRESS$ -p $ARG1$ $ARG2$ $ARG3$
}
After this I add this to my printers.cfg:
define service{
use generic-service
host_name ljpm1217nfwmfp
service_description PS
check_command check_printer!-H 192.168.220.11 -C public -x "STATUS" -w WARNING -x CRITICAL -S / |-V|-h
normal_check_interval 1
retry_check_interval 1
}
But the Nagios webpage return me a "null". Can you help me please?
Thanks a lot,
Alex.
As I noted in our e-mail correspondence, your syntax for running the command is incorrect. Please consult the documentation for more help, but the commands I provided you in e-mail should work.
I had to make the following changes to get the plugin to run:
1. dos2unix
2. set bash as shell
3.put quotes around MARKER_COLOR to eliminate grep error messages
4.new line after here doc terminator
$ diff -b ../../Downloads/firefox/check_snmp_printer_args.sh /usr/lib/nagios/plugins/check_snmp_printer_args.sh
1c1
#!/bin/bash
495a496
> CURRENT_STATUS=0
561c562
if $(echo "$MARKER_NAME" | grep -vqi "$MARKER_COLOR"); then
1022c1023,1024
all_required_binaries
> )
#1 should not be needed with the latest versions of the plugin, but yes I have received a few complaints about dos2unix before. That's what happens when I don't have a Linux workstation at my company :)
#2 is needed for Ubuntu machines, yes. All other distros use BASH or an interpreter that works with the plugin.
#3 should be fixed already in the latest version of the plugin.
I will have to investigate #4 but have not heard other complains about this.
Your command definition should look like this:
define command {
command_name check_printer
command_line $USER1$/check_printer $HOSTADDRESS$ $ARG1$ $ARG2$
}
define service{
use generic-service
host_name SharpAr-m257
service_description PING
check_command check_ping!3000.0,80%!5000.0,100%
normal_check_interval 10
retry_check_interval 1
}
define command{
command_name check_local_users
command_line $USER1$/check_users -w $ARG1$ -c $ARG2$
}
Try: 'strings check_snmp_printer.sh > check_snmp_printer-ASCII.sh'
'file' now reports:
check_snmp_printer-ASCII.sh: POSIX shell script text executable
Thanks for the note, is UTF format a problem for Linux? My CentOS server has never had a problem with it.
Unfortunately, I do most of my work, including file upload, on a Windows box. I do not have a Linux workstation at work and do no get to work on the plugin outside of work.
I added 3 little Functions - maybe you wanne add them to the Script:
Display Message
Printer Status
Device Status
#################################################
#########################################################
### check_display function ###
#########################################################
function check_display(){
DISPLAY=`snmpget -v1 -On -c $COMMUNITY $HOSTNAME 1.3.6.1.2.1.43.16.5.1.2.1.1 | cut -d " " -f4-`
printf "Displaytext: $DISPLAY
"
exit 0
}
#########################################################
### check_printer_status function ###
#########################################################
function check_printer_status(){
PRSTATUS=`snmpget -v1 -On -c $COMMUNITY $HOSTNAME 1.3.6.1.2.1.25.3.5.1.1.1 | cut -d " " -f4-`
EXITSTRING="Drucker Status = "
EXITCODE=0
case "$PRSTATUS" in
"other(1)")
EXITSTRING="$EXITSTRING$PRSTATUS - STATUS: CRITICAL!"
EXITCODE=2
;;
"idle(3)")
EXITSTRING="$EXITSTRING$PRSTATUS - STATUS: OK!"
EXITCODE=0
;;
"printing(4)")
EXITSTRING="$EXITSTRING$PRSTATUS - STATUS: OK!"
EXITCODE=0
;;
"warmup(5)")
EXITSTRING="$EXITSTRING$PRSTATUS - STATUS: OK!"
EXITCODE=0
;;
*)
EXITSTRING="$EXITSTRING$PRSTATUS - STATUS: WARNING!"
EXITCODE=1
;;
esac
printf "$EXITSTRING|$PRSTATUS;;;
"
exit $EXITCODE
}
#########################################################
### check_device_status function ###
#########################################################
function check_device_status(){
DEVSTATUS=`snmpget -v1 -On -c $COMMUNITY $HOSTNAME 1.3.6.1.2.1.25.3.2.1.5.1 | cut -d " " -f4-`
EXITSTRING = "Geraet Status = "
EXITCODE=0
case "$DEVSTATUS" in
"unknown(1)")
EXITSTRING="$EXITSTRING$DEVSTATUS - STATUS: WARNING!"
EXITCODE=1
;;
"running(2)")
EXITSTRING="$EXITSTRING$DEVSTATUS - STATUS: OK!"
EXITCODE=0
;;
"warning(3)")
EXITSTRING="$EXITSTRING$DEVSTATUS - STATUS: WARNING!"
EXITCODE=1
;;
"testing(4)")
EXITSTRING="$EXITSTRING$DEVSTATUS - STATUS: OK!"
EXITCODE=0
;;
"down(5)")
EXITSTRING="$EXITSTRING$DEVSTATUS - STATUS: CRITICAL!"
EXITCODE=2
;;
*)
EXITSTRING="$EXITSTRING$DEVSTATUS - STATUS: WARNING!"
EXITCODE=1
;;
esac
printf "$EXITSTRING|$DEVSTATUS;;;
"
exit $EXITCODE
}
To solve it make a "dos2unix" command.
After this problem, the script works very well.
Thanks a lot
Thanks for pointing out you had this problem. While my files worked fine in either Windows or CentOS, it could be that WinSCP was converting the file for me without realizing it.
The file that is uploaded NOW has been converted to UTF-8 format first, so please download to get the latest fixes!
Each time I try to launch it, i've got several errors, unknown command, at line 158,159,163,164.
I edited the file and remove the help() function, and tried again to make it work. It failed, cannot find function, syntax error in check_snmp_printer, unknown ^M... It seems the file has been created under windows... If so, please mention it.
The original file was indeed created in Windows. It appears WinSCP may be converting files for me when transferring to my CentOS box. You should see the errors go away if you convert the file using dos2unix or similar programs. I use Notepad++ as an editor and it easily converts between UTF and ANSI formats as well.
Please download my latest version, 1.6, which has some bugfixes and was converted to UTF-8 before uploading. I really hope you will try my script again and adjust your rating after you can get it working.