Bonjour,

J'utilise le plugin check_windows_updates.ps1 pour remonter les mise à jour windows. Le plugin est fonctionnel sur Nagios.

Lorsque je veut assigner un gadget sous Nagvis (au service de check Windows Update), style bar_html, pour visualiser sur ma Map le nombre de maj critique et/ou optionnel. Je mange une erreur "ERROR : the needed parameter "perfdata" is missing".

J'en conclus donc qu'il me manque des informations en Perfdata. En fouillant un peu, j'ai trouvé comment le plugin doit renvoyer la sortie pour perfdata.

Voici un bout du code du script :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
if (($countCritical + $countOptional) -gt 0) {
	$returnString = "Updates: $countCritical critical, $countOptional optional" + [Environment]::NewLine + "$criticalTitles"
	$returnString = [regex]::Replace($returnString, $pattern, { $htReplace[$args[0].value] })
	if ($returnString.length -gt 1024) {
        Write-Host ($returnString.SubString(0,1023))
    } else {
        Write-Host $returnString

La partie qui nous intéresse est la :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
$returnString = "Updates: $countCritical critical, $countOptional optional" + [Environment]::NewLine + "$criticalTitles"

Pour que les informations arrivent à Perfdata, il faut ajouter un pipeline, exemple :

Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
$returnString = "Updates: $countCritical critical, $countOptional optional | Updates: $countCritical critical, $countOptional optional"

Cela fonctionne à moitié. En gros je récupère bien les données en Perfdata, mais mal formaté, je me retrouve avec des '=0 un peu partout dans le texte :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
user@nagios:/usr/local/nagios/libexec$ ./check_nrpe -H 192.***.***.*** -c check_win_updates
Updates: 0 critical, 3 optional |'Updates:'=0 '0'=0 'critical,'=0 '3'=0 'optional'=0


J'ai essayé plusieurs façon de faire, en ajoutant des ' , la plus propre est celle ci :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
$returnString = "Updates: $countCritical critical, $countOptional optional | 'Updates: critical=$countCritical',optional=$countOptional"

Ce qui donne :
Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
user@nagios:/usr/local/nagios/libexec$ ./check_nrpe -H 192.***.***.*** -c check_win_updates
Updates: 0 critical, 3 optional |''Updates: critical'=0',optional=3

Voila voila, et la je bloque car le scripting c'est pas ce que je maitrise le mieux. J'ai beau retourné dans tous les sens, je ne comprend pas la syntaxe que je doit utiliser. Je pense qu'il ne doit pas aimer les espaces, je sais pas trop. Car en local, lorsque je balance le script dans un powershell, la réponse est niquel (si j’enlève les ' ajoutés).

Si quelqu'un à une idée, je suis preneur

Pour info, j'utilise Nagios 4.1.1 avec le plugin NRPE 2.15 (sur un Ubuntu server) et NSClient ++ 0.4.3.143 coté Windows.