Nov
28
2008

[Script Nagios] Vérifier la récupération des emails en POP sur Mdaemon en VBS


Je mets ce script ici pour me permettre de le retrouver si je perds la mémoire :p. Peut-être que ça servira à quelqu’un.

Il a été intégré à Nagios grâce au code erreur en sortie puis exécuté par le check_nrpe. Ce script est au format wsf.

 

<package>
<job id="Application Script">

<comment>
          File: Application.wsf
          Description: Ce script permet de savoir si une application récupère bien
          les emails via POP sur Mdaemon
          Réalisé par Olivier Legras

</comment>
<runtime>

<description>
          Il liste les fichiers msg sur le serveur Mdaemon des comptes ActesWeb
</description>

<example>
          CScript ActesWebtest.wsf numero_partenaire //nologo
</example>

</runtime>

<script language="VBScript">
‘Déclaration des variables
‘__________________________________
‘Constantes
Option Explicit
Const TempsMaximum = 60
Const Extension = "msg"
Const intOK = 0
Const intWarning = 1
Const intCritical = 2

‘Variables
Dim Ville
Dim fso, fichier, fileItem
Dim i, imax, z, valeur, cible, liste, i2, strMessage, intExit
Dim DifferenceMinute , PathMDB, Nom_rep

‘Objets
Set fso = CreateObject("Scripting.FileSystemObject")

‘Initialisation
strMessage = ""
imax = 0

‘Test de l’argument Partenaire (1 argument obligatoire)
If WScript.Arguments.Count <> 1 Then
    strMessage = "Critical: Mettre le partenaire en argument"
    intExit = intCritical
    WScript.Echo strMessage
    WScript.Quit(intExit)
End If

‘Récupération de contenu de l’argument
Ville = WScript.Arguments.Item(0)

‘Attribution du répertoire en fonction du partenaire
Select Case Ville
Case "10"
    PathMDB = "D:MDaemonUsersdomaineapplication10"
Case "11"
    PathMDB = "D:MDaemonUsersdomaineapplication11"
Case "12"
    PathMDB = "D:MDaemonUsersdomaineapplication12"
Case "13"
    PathMDB = "D:MDaemonUsersdomaineapplication13"
Case "14"
    PathMDB = "D:MDaemonUsersdomaineapplication14"
Case Else
    strMessage = "Critical: Partenaire Inconnu : "& Ville
    intExit = intCritical
    WScript.Echo strMessage
    WScript.Quit(intExit)
End Select

‘On test que le chemin est valide
If Not (fso.FolderExists(PathMDB)) Then
    strMessage = "Critical: Repertoire inaccessible :"& PathMDB
    intExit = intCritical
    WScript.Echo strMessage
    WScript.Quit(intExit)
End If

‘On récupère la liste des fichiers du répertoire
‘début de l’énumération
For Each fichier In fso.GetFolder(PathMDB).Files
Set fileItem = fso.GetFile(fichier)

imax = imax + 1
ReDim Preserve Tableau(3, imax)
Tableau(1, imax) = Fichier.Name
Tableau(2, imax) = FileItem.DateLastModified
Tableau(3, imax) = fso.GetExtensionName (Fichier.Name)

‘—trier les fichiers par ordre décroissant de création —
Do
Valeur = 0
For i = 0 To imax – 1
If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
For z = 1 To 3
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next
Valeur = 1
End If
Next
Loop While Valeur = 1
Set fileItem = nothing
Next
imax=UBound(Tableau,2)

‘On récupère seulement les fichiers avec l extension de notre choix
i2=1
ReDim Preserve Tableau_final(3,imax)
For i = 1 To imax – 1
If Tableau(3, i)=Extension Then
    ‘For z = 1 To 3
    Tableau_final(1, i2) = Tableau(1, i)
    Tableau_final(3, i2) = Tableau(3, i)
    Tableau_final(2, i2) = CDate(Tableau(2, i))
    i2 = i2 +1
    Valeur = 1
End If
Next

‘Comparer les date de création des fichiers msg
DifferenceMinute = DateDiff("n",Cdate(Tableau_final(2,i2-1)),Now )

‘On vérifie que la date n’est pas nulle
If (Cdate(Tableau_final(2,i2-1)) <> "00:00:00") Then
    ‘On vérifie que le courrier est bien récupérer avant 60 minutes
    If DifferenceMinute > TempsMaximum then
        intExit = intCritical
        strMessage = "Critical: Les mails ne sont pas recuperes depuis le "& Cdate(Tableau_final(2,i2-1))
    End If
Else
    intExit = intOk
    strMessage = "Ok: Fonctionnement Normal"
End If

Set fso = Nothing

WScript.Echo strMessage
WScript.Quit(intExit)

</script>
</job>
</package>

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

Laissez un commentaire