IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Sortie Perfdata d'un script windows pour Nagios


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Par défaut Sortie Perfdata d'un script windows pour Nagios
    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.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Est-ce que la ligne

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $returnString = [regex]::Replace($returnString, $pattern, { $htReplace[$args[0].value] })

    est toujours dans le code? Cette ligne reprend $returnString and execute un replace regex, que vaut $returnString après cette ligne?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Par défaut
    Oui cette ligne est toujours présente. Voici le code actuel (enfin la partie que je souhaiterais modifier) :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (($countCritical + $countOptional) -gt 0) {
    	$returnString = "Updates: $countCritical critical, $countOptional optional | 'Updates: critical=$countCritical',optional=$countOptional" #+ [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
        }
    }

    J'ai commenté la fin de la ligne 2 (dans le code présent) : #+ [Environment]::NewLine + "$criticalTitles" car lorsque j'utilise le pipe, la fin de la ligne ne fonctionne plus (liste des KB MAJ critiques). Mais dans l'absolu ce n'est pas gênant puisque les informations qui m’intéresse de remonter en perfdata dans nagios sont les compteurs des majs critiques et optionnel.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 25
    Par défaut
    J'avance un peu à tâtons, et j'en arrive à ce niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (($countCritical + $countOptional) -gt 0) {
    	$returnString = "Updates: $countCritical critical, $countOptional optional | ; 'Updates : critical'=$countCritical; 'optional'=$countOptional" #+ [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   
        }   
    }
    Qui me renvoi :
    Code : 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, 2 optional |'Updates : critical'=0 'optional'=2
    J'ai commenté la ligne avec le regex, je ne comprend pas ce que fait cette fonction, d'après la toile, ça doit remplacer des caractère, enfin si j'ai bien compris. Mais comme je commence juste à mettre les main dans le powershell, je vous avoue ne ps tout comprendre et y aller à l'aveugle.

Discussions similaires

  1. modification script perl pour nagios
    Par tetzispa dans le forum Programmation et administration système
    Réponses: 19
    Dernier message: 27/09/2014, 22h29
  2. Script Windows pour modifier install Office
    Par jpo dans le forum Windows
    Réponses: 2
    Dernier message: 03/07/2014, 10h08
  3. script perl pour nagios
    Par tetzispa dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 06/06/2014, 11h06
  4. Script windows pour connecter à DB
    Par big1 dans le forum SQL
    Réponses: 1
    Dernier message: 30/04/2008, 13h46
  5. script windows pour copier fichier
    Par sacan dans le forum Windows
    Réponses: 3
    Dernier message: 09/06/2006, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo