NSCLIENT++ (II). Comandos externos.

Como vimos en el artículo previo de Instalación y configuración básica de NSClient++, incluye un montón de chequeos de serie para los que creamos normalmente alias que nos permiten tenerlos “a mano”. Si nos queremos salir de lo que trae de serie nos permite usar scripts externos (powershell, vbs, bat) y nos lo facilita mediante un módulo también configurable en su sección correspondiente. Aunque eso sí, tienes que currártelo porque la documentación es un tanto confusa.

Para poder usar scripts externos de este tipo tendremos que configurar en nuestro nsclient.ini lo siguiente previamente:

[/settings/external scripts]
; Necesario para usar argumentos en scripts externos. Mejor darle el argumento en el alias. No recomendable -comentado-.
; allow arguments = true

[/settings/external scripts/wrappings]
; Necesario para que se para lanzar el intérprete adecuado según extensión
bat = scripts\\%SCRIPT% %ARGS%
ps1 = cmd /c echo scripts\\%SCRIPT% %ARGS%; exit($lastexitcode) | powershell.exe -ExecutionPolicy Bypass -command –
vbs = cscript.exe //T:30 //NoLogo scripts\\lib\\wrapper.vbs %SCRIPT% %ARGS%

[/settings/external scripts/wrapped scripts]
;Nuestros “alias” a los commandos externos en directorio scripts de nsclient
test_bat = check_ok.bat
test_ps = check_test.ps1
test_vbs = check_test.vbs

Hemos configurado alias de prueba que llaman a scripts que vienen ya con la instalación de nsclient++ para estos menesteres. Es recomendable cuando realicemos pruebas iniciar nsc en modo test como se explicaba en el artículo previo de nsclient++.

Los scripts irán / se copiarán el el directorio “scripts” de la instalación de nsclient++.
Para ejecutar scripts Powershell no firmados (no nos deja Windows por defecto) tenemos varias opciones. Me he inclinado, para no desactivarlo en todo el entorno, por incluir la directiva “ExecutionPolicy Bypass” en la llamada al interprete (ya puesto en la configuración de arriba). De esta forma lo desactiva para los scripts que llamemos desde nsclient++.

Pruebas de funcionamiento

Desde Nagios probamos algunos scripts de prueba que hemos definido su alias previamente (nos devuelven valores por defecto que tienen dichos scripts).

check_nrpe -H 192.168.1.33 -c test_ps
UNKNOWN: Everything is not going to be fine!

check_nrpe -H 192.168.1.33 -c test_bat
OK: Everything is going to be fine a

Realizamos también una prueba con otro powershell que nos devuelve si tiene el equipo actualizaciones pendientes y que podemos localizar aquí.

Copiamos el script en nuestro directorio de scripts y creamos un alias para el wraper (se lo añadimos a nuestra sección).

[/settings/external scripts/wrapped scripts]
check_updates = check_windows_updates.ps1

Lo probamos desde nuestro Nagios.

check_nrpe -H 192.168.1.33 -c check_updates
Updates: 0 critical, 35 optional
(nos devuelve un WARNING por las opcionales)
echo $?
1

Si decidimos usar un script externo que no esté preparado para Nagios debemos tener cuidado de que además de devolvernos un texto nos devuelva el valor de retorno adecuado, es posible que tengamos que retocarlo. El script de ejemplo que hemos visto para chequear los updates nos debería servir de guía para retocarlo. Dichos valores, recordamos, han de ser:

0   OK
1   Warning
2   Critical
3   Desconocido

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Comment moderation is enabled. Your comment may take some time to appear.