Page 1 of 2

"No handler for command" error implenteing .wsf script

Posted: Wed Jul 17, 2013 11:06 am
by Stu74
Hi everyone,

I'm running on a single monitor host:

Nagios 3.5.0
Ubuntu 12.04
NRPE 2.14
Nagios Plugins 1.4.16

I'm trying to get the Check All Services.wsf script (http://tinyurl.com/nbsq75c) working. I've defined this command in commands.cfg:

define command{

Re: "No handler for command" error implenteing .wsf script

Posted: Wed Jul 17, 2013 11:19 am
by slansing
You did not list if you are using NSClient++ or what version, this is a windows check so we would need to know that portion, as well as your command and service definitions for this check, and the nsclient/nsc.ini file's command definition for this plugin from the window server.
Checks all automatic Windows services are running. Accepts exclusions. Written Natively to work on any modern Windows system and can be used with any standard Nagios remote execution method.

Re: "No handler for command" error implenteing .wsf script

Posted: Wed Jul 17, 2013 1:43 pm
by Stu74
Thanks slansing. I submitted the post in error halfway through writing it. Doh!

I'll get more info when in the office tomorrow.

Re: "No handler for command" error implenteing .wsf script

Posted: Wed Jul 17, 2013 2:40 pm
by slansing
Sounds good! Let us know.

Re: "No handler for command" error implenteing .wsf script

Posted: Thu Jul 18, 2013 3:22 am
by Stu74
Hi slansing. I have some more info for you:

My commands.cfg has the following command definition:

define command{
command_name check_nrpe
command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

I've this service definition for the remote host I want to monitor:

define service{
use generic-service
host_name gbflwmgm01
service_description All Services
check_command check_nrpe!check_all_services_wsf
}

In the nsclient.ini file on the (Windows) remote host I want to monitor I have this:

[/settings/external scripts/alias]
check_all_services_wsf=cscript //NOLOGO c:\nagios\check_all_services.wsf

However, in the Nagios console the All Service check is listed for the remote host, but its status is UNKNOWN and Status Info reports 'No handler for command: cscript'. If I run the script manually on the Windows box, it runs ok and reports 'x automatic services running', etc.

Any ideas? Many thanks in advance as this problem is driving me mad :-)

Re: "No handler for command" error implenteing .wsf script

Posted: Thu Jul 18, 2013 9:33 am
by slansing
Hmm, it would be easiest to move the check_all_services.wsf script to the nsclient++\scripts directory, then modify the nsc.ini external script listing to this:

Code: Select all

check_all_services_wsf=cscript.exe //NoLogo //T:30 scripts\check_process_instances_from_file.wsf
Restart nsclient++ and you should be fine!

Re: "No handler for command" error implenteing .wsf script

Posted: Thu Jul 18, 2013 4:28 pm
by Stu74
Hi. Yeah I tried that and it didn't fix the issue. I've been digging in further to try and fix this and found out the following...

From the monitoring server, if I run the command check_nrpe -H <client IP> I get the response
I (0,4,2,90 2013-02-04) seem to be doing fine. So, communications look ok between the 2 computers.

However, if I run any other check_nrpe command from the monitoring server e.g.
./check_nrpe -H <Client IP> -c check_time then I get the same error as I see in the Nagios GUI - No handler for command:....... I can run check_nt commands no problem, so the NRPE looks to be problem.

I'm wondering if this is a problem with the Nagios/NRPE server configuration and not with the client I'm monitoring? I set up same external script check on a 2nd client computer and got the same errors.

Any other ideas? :)

Re: "No handler for command" error implenteing .wsf script

Posted: Thu Jul 18, 2013 4:35 pm
by slansing
Well that error is stemming from definitions on the remote host, can you post your nsc.ini file in code wraps and block out front facing IP's and your password?

Re: "No handler for command" error implenteing .wsf script

Posted: Thu Jul 18, 2013 4:42 pm
by lmiltchev
Post the NSC.ini (nsclient.ini) file, so that we can take a look at it (obscure the sensitive data).

Re: "No handler for command" error implenteing .wsf script

Posted: Fri Jul 19, 2013 2:09 am
by Stu74
Thanks guys. Here is my nsclient.ini file:

# If you want to fill this file with all avalible options run the following command:
# nscp settings --generate --add-defaults --load-all
# If you want to activate a module and bring in all its options use:
# nscp settings --activate-module <MODULE NAME> --add-defaults
# For details run: nscp settings --help


; Undocumented section
[/modules]

; CheckDisk - CheckDisk can check various file and disk related things. The current version has commands to check Size of hard drives and directories.
CheckDisk = 1

; Event log Checker. - Check for errors and warnings in the event log. This is only supported through NRPE so if you plan to use only NSClient this wont help you at all.
CheckEventLog = 1

; Check External Scripts - A simple wrapper to run external scripts and batch files.
CheckExternalScripts = 1

; Helper function - Various helper function to extend other checks. This is also only supported through NRPE.
CheckHelpers = 1

; Check NSCP - Checkes the state of the agent
CheckNSCP = 1

; CheckSystem - Various system related checks, such as CPU load, process state, service state memory usage and PDH counters.
CheckSystem = 1

; CheckWMI - CheckWMI can check various file and disk related things. The current version has commands to check Size of hard drives and directories.
CheckWMI = 1

; NRPE server - A simple server that listens for incoming NRPE connection and handles them.
NRPEServer = 1

; NSCAClient - Passive check support over NSCA.
NSCAClient = 1

; NSClient server - A simple server that listens for incoming NSClient (check_nt) connection and handles them. Although NRPE is the preferred method NSClient is fully supported and can be used for simplicity or for compatibility.
NSClientServer = 1


; Undocumented section
[/settings/default]

; ALLOWED HOSTS - A comaseparated list of allowed hosts. You can use netmasks (/ syntax) or * to create ranges.
allowed hosts = 192.168.124.43

port=12489

; A list of aliases available. An alias is an internal command that has been "wrapped" (to add arguments). Be careful so you don't create loops (ie check_loop=check_a, check_a=check_loop)
[/settings/external scripts/alias]


check_all_services_wsf=cscript.exe //NoLogo //T:30 scripts\check_all_services.wsf

; alias_cpu - Alias for alias_cpu. To configure this item add a section called: /settings/external scripts/alias/alias_cpu
alias_cpu = checkCPU warn=80 crit=90 time=5m time=1m time=30s

; alias_cpu_ex - Alias for alias_cpu_ex. To configure this item add a section called: /settings/external scripts/alias/alias_cpu_ex
alias_cpu_ex = checkCPU warn=$ARG1$ crit=$ARG2$ time=5m time=1m time=30s

; alias_disk - Alias for alias_disk. To configure this item add a section called: /settings/external scripts/alias/alias_disk
alias_disk = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll FilterType=FIXED

; alias_disk_loose - Alias for alias_disk_loose. To configure this item add a section called: /settings/external scripts/alias/alias_disk_loose
alias_disk_loose = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll FilterType=FIXED ignore-unreadable

; alias_event_log - Alias for alias_event_log. To configure this item add a section called: /settings/external scripts/alias/alias_event_log
alias_event_log = CheckEventLog file=application file=system MaxWarn=1 MaxCrit=1 "filter=generated gt -2d AND severity NOT IN ('success', 'informational') AND source != 'SideBySide'" truncate=800 unique descriptions "syntax=%severity%: %source%: %message% (%count%)"

; alias_file_age - Alias for alias_file_age. To configure this item add a section called: /settings/external scripts/alias/alias_file_age
alias_file_age = checkFile2 filter=out "file=$ARG1$" filter-written=>1d MaxWarn=1 MaxCrit=1 "syntax=%filename% %write%"

; alias_file_size - Alias for alias_file_size. To configure this item add a section called: /settings/external scripts/alias/alias_file_size
alias_file_size = CheckFiles "filter=size > $ARG2$" "path=$ARG1$" MaxWarn=1 MaxCrit=1 "syntax=%filename% %size%" max-dir-depth=10

; alias_mem - Alias for alias_mem. To configure this item add a section called: /settings/external scripts/alias/alias_mem
alias_mem = checkMem MaxWarn=80% MaxCrit=90% ShowAll=long type=physical type=virtual type=paged type=page

; alias_process - Alias for alias_process. To configure this item add a section called: /settings/external scripts/alias/alias_process
alias_process = checkProcState "$ARG1$=started"

; alias_process_count - Alias for alias_process_count. To configure this item add a section called: /settings/external scripts/alias/alias_process_count
alias_process_count = checkProcState MaxWarnCount=$ARG2$ MaxCritCount=$ARG3$ "$ARG1$=started"

; alias_process_hung - Alias for alias_process_hung. To configure this item add a section called: /settings/external scripts/alias/alias_process_hung
alias_process_hung = checkProcState MaxWarnCount=1 MaxCritCount=1 "$ARG1$=hung"

; alias_process_stopped - Alias for alias_process_stopped. To configure this item add a section called: /settings/external scripts/alias/alias_process_stopped
alias_process_stopped = checkProcState "$ARG1$=stopped"

; alias_sched_all - Alias for alias_sched_all. To configure this item add a section called: /settings/external scripts/alias/alias_sched_all
alias_sched_all = CheckTaskSched "filter=exit_code ne 0" "syntax=%title%: %exit_code%" warn=>0

; alias_sched_long - Alias for alias_sched_long. To configure this item add a section called: /settings/external scripts/alias/alias_sched_long
alias_sched_long = CheckTaskSched "filter=status = 'running' AND most_recent_run_time < -$ARG1$" "syntax=%title% (%most_recent_run_time%)" warn=>0

; alias_sched_task - Alias for alias_sched_task. To configure this item add a section called: /settings/external scripts/alias/alias_sched_task
alias_sched_task = CheckTaskSched "filter=title eq '$ARG1$' AND exit_code ne 0" "syntax=%title% (%most_recent_run_time%)" warn=>0

; alias_service - Alias for alias_service. To configure this item add a section called: /settings/external scripts/alias/alias_service
alias_service = checkServiceState CheckAll

; alias_service_ex - Alias for alias_service_ex. To configure this item add a section called: /settings/external scripts/alias/alias_service_ex
alias_service_ex = checkServiceState CheckAll "exclude=Net Driver HPZ12" "exclude=Pml Driver HPZ12" exclude=stisvc

; alias_up - Alias for alias_up. To configure this item add a section called: /settings/external scripts/alias/alias_up
alias_up = checkUpTime MinWarn=1d MinWarn=1h

; alias_updates - Alias for alias_updates. To configure this item add a section called: /settings/external scripts/alias/alias_updates
alias_updates = check_updates -warning 0 -critical 0

; alias_volumes - Alias for alias_volumes. To configure this item add a section called: /settings/external scripts/alias/alias_volumes
alias_volumes = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes FilterType=FIXED

; alias_volumes_loose - Alias for alias_volumes_loose. To configure this item add a section called: /settings/external scripts/alias/alias_volumes_loose
alias_volumes_loose = CheckDriveSize MinWarn=10% MinCrit=5% CheckAll=volumes FilterType=FIXED ignore-unreadable

; default - Alias for default. To configure this item add a section called: /settings/external scripts/alias/default
default =