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 :
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 :
$returnString = "Updates: $countCritical critical, $countOptional optional" + [Environment]::NewLine + "$criticalTitles"
Pour que les informations arrivent à Perfdata, il faut ajouter un pipeline, exemple :
$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 :
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 :
$returnString = "Updates: $countCritical critical, $countOptional optional | 'Updates: critical=$countCritical',optional=$countOptional"
Ce qui donne :
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.
Partager