surveillance des disque en Vbscript et Wmi "Urgent"

surveillance des disque en Vbscript et Wmi "Urgent" - VB/VBA/VBS - Programmation

Marsh Posté le 16-06-2005 à 12:27:54    

bonjour a tous je debute en vbScript et donc comme tout debutant j ai un probleme que vois ci :
Je doit faire un script pemettant la surveillance d espace disque sur des seveurs j ai donc fai un script qui permet de recuperer l espace disque total ainsi que l espace libre sur celui ci en pour centage !!
 
Maintenant je souhaiterais pouvoir spécifier une liste de serveurs avec un seuil en % pour chacun des volumes de chaque serveur puis stocker ces informations horodatées dans une base de type Access et finalement pouvoir faire des remonter d'alerte via Lotus si un volume est en dessous du seuil pré-défini
 
voila alors est ce que quelqu ' un peu m orienter ou bien me donner des lien traitant d un sujet similaire parceque j ai beau chercher et je ne trouve rien merci d avance a tous
 
voila mon debut de script qui je pense peut vous aider a comprendre un pue mieux ce que je veux faire :
 
'----------------------------------------------------------
' Script de description des Hdd dans une page web
' ----------------------------------------------------------
Dim cnt
dim Aff()
dim Aff0()
dim Aff1()
dim Aff2()
dim Aff3()
 
cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)
 
Select Case WScript.Arguments.Count
Case 0
' Default if none specified is local computer ("." )
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputer = objItem.Name
Next
Case 1
' Command line parameter can either be a computer name
' or "/?" to request online help
strComputer = Wscript.Arguments(0)
if InStr( strComputer, "?" ) > 0 Then Syntax
Case Else
' Maximum is 1 command line parameter
Syntax
End Select
 
Display( strComputer )
 
Function Display( strComputer )
On Error Resume Next
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
If Err.Number Then
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
" " & Err.Description
Err.Clear
Syntax
End If
On Error GoTo 0
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48)
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colItems
Aff(cnt) = strComputer
Aff0(cnt) = objItem.Name & vbTab
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _
vbCrLf
cnt = cnt + 1
Redim Preserve Aff(cnt)
Redim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
End Function
 
' ----------------------------------------------------------
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject" )
DestHtml = "hd.html"
CreateHTML DestHTML
 
Sub CreateHTML(filename)
dim ts
set ts=fso.CreateTextFile(filename,true)
ts.writeline "<HTML>"
ts.WriteLine "<BODY>"
ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>"
ts.writeline "<table border=1 cellspacing=1 width=100%>"
ts.writeline "<tr>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Name</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Drive</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Size</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Free</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>% Free</b></td>"
ts.writeline "</tr>"
ts.writeline "<tr>"
for i = 0 to cnt
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>"
ts.writeline "</tr>"
next
 
ts.writeline "</table>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>"
ts.WriteLine "</CENTER></BODY>"
ts.WriteLine "</HTML>"
ts.close
End Sub

Reply

Marsh Posté le 16-06-2005 à 12:27:54   

Reply

Marsh Posté le 18-06-2005 à 18:49:35    

le premier paragraphe : a compris.
le second paragraphe : a pas compris.
Tu peux détailler stp ?

Reply

Marsh Posté le 19-06-2005 à 12:05:15    

Salut Merci de t etre penché sur le sujet donc le second paragraphe permet dafficher le resultat sur une page Web. plutot que davoir ca sur Une MsgBox!! As tu compris ???

Reply

Marsh Posté le 19-06-2005 à 17:38:49    

Bon je reprend tes deux sujets en un.
 
si tu veux éxécuter ton script toutes les 8h, utilise plutot le VBA contenu dans Acces (si tu as).
C'est quasiment la même programmation. Après, avec un sacré timer, tu peux faire ta remontée d'infos pépère.
Moi je vois le truc sous cette forme
 
timer écoulé
récupérer tout l'espace disque
insérer l'espace disque dans la table
si espace disque faible -> message
re timer

Reply

Marsh Posté le 20-06-2005 à 09:32:24    

salut knakes en ce qui concerne la lancement de mon script a des moment precis il n y aura pas de probleme dans la mesure ou je configurerai dans mes taches planifié.Mon probleme reside dans le faite que je doit envoyer les données que recupere mon script a savoir l espace dique restant dans une base de données type ACESS POUR ENSUITE pouvoir effectué des statistique et des graphes de l evolution de mon espace disque!! tu comprends..???? et c est sur ca dont j ai besoin d aide merci d avance !!!

Reply

Marsh Posté le 20-06-2005 à 12:35:50    

pour envoyer dans une bdn type acces, le mieux c'est de faire une macro pour un fichier et lancer ce ficher toutes les 5 minutes  
toutes tes valeurs -> dansla base et après tu peux te permettre un traitement automatisé.

Reply

Marsh Posté le 21-06-2005 à 15:50:49    

salut knakes moi je doit faire Que du Vbscript  
 en faite le premier script que j ai poster juste au dessus fonctionne c est a dire qu il me recupere bien les information concernant les disques:
Voici le script avec les modification pour qu il envoi les données vers une base access mais il ne fonctionne pas.  il ya un problem et je n arrive pas a le corriger alors si kelkun pour pouvais me donner un coup de main se serai cool!!  
voici les données concernant ma base de données pe etre qu elle peuvent vous etre utiles :
En faite Moi j ai crée une base de donnée Appelée BdDisque.mdb et dans cette base de donnée j ai crée une table que j ai nomé EspaceDisque et qui contient les champs suivants: Nom
Drive
Size
Free
Pourcentage
Date
 
Comme vous pouvez l apercevoir cela correspond en faite aux données recuperées par mon script !! Ma base de Donnée se trouve dans mon disque F:\
Alors dites moi si ce que j ai fais est correcte deja dans un premier temps pour que je ne continu pas dans la n importe quoi lol
 
 
 
 
 
 
 
'----------------------------------------------------------  
' Script de description des Hdd dans une page web  
' ----------------------------------------------------------  
'
'*************************************************************************
'Constante d'accèss au fichier *.mdb
 
Const adOpenStatic = 3  
Const adLockOptimistic = 3  
Const adUseClient = 3  
 
Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" '  
' Déclaration des variables de la base de données ACCESS  
'  
Dim oFS, Disque, Fichier, AccesFichier  
 
Dim objConnection  
Dim objRecordset  
Dim AccesFichier  
'*************************************************************************
 
'********-----------------------------------------------------************
Dim fso  
Set fso = WScript.CreateObject("Scripting.FileSystemObject" )  
DestHtml = "hd.html" '********-----------------------------------------------------************
 
Dim cnt  
dim Aff()  
dim Aff0()  
dim Aff1()  
dim Aff2()  
dim Aff3()  
 
cnt = 0  
Redim Aff(cnt)  
Redim Aff0(cnt)  
Redim Aff1(cnt)  
Redim Aff2(cnt)  
Redim Aff3(cnt)  
   
  Select Case WScript.Arguments.Count  
    Case 0  
        ' Default if none specified is local computer ("." )  
        Set objWMIService = GetObject( "winmgmts://./root/cimv2" )  
        Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )  
        For Each objItem in colItems  
          strComputer = objItem.Name  
        Next  
    Case 1  
        ' Command line parameter can either be a computer name  
        ' or "/?" to request online help  
        strComputer = Wscript.Arguments(0)  
        if InStr( strComputer, "?" ) > 0 Then Syntax  
    Case Else  
        ' Maximum is 1 command line parameter  
        Syntax  
  End Select  
 
  Display (strComputer)  
  CreateHTML (DestHTML )
  CreateBDAccess()
   
Function Display( strComputer )  
 
  On Error Resume Next  
  Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )  
  If Err.Number Then  
    WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _  
      " " & Err.Description  
    Err.Clear  
    Syntax  
  End If  
  On Error GoTo 0  
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48)  
  Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)  
  For Each objItem in colItems  
    Aff(cnt) = strComputer  
    Aff0(cnt) = objItem.Name & vbTab  
    Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )  
    Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )  
    Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _  
    vbCrLf  
    cnt = cnt + 1  
    Redim Preserve Aff(cnt)  
    ReDim Preserve Aff0(cnt)  
    Redim Preserve Aff1(cnt)  
    Redim Preserve Aff2(cnt)  
    Redim Preserve Aff3(cnt)  
  Next  
End Function  
 
' ----------------------------------------------------------  
 
Function CreateHTML(filename)  
  dim ts  
  set ts=fso.CreateTextFile(filename,true)  
 
  ts.writeline "<HTML>"   ts.WriteLine "<BODY>"   ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>"   ts.writeline "<table border=1 cellspacing=1 width=100%>"   ts.writeline "<tr>"   ts.writeline "<td width=20%>"   ts.writeline "<p align=center><b>Name</b></td>"   ts.writeline "<td width=20%>"   ts.writeline "<p align=center><b>Drive</b></td>"   ts.writeline "<td width=20%>"   ts.writeline "<p align=center><b>Size</b></td>"   ts.writeline "<td width=20%>"   ts.writeline "<p align=center><b>Free</b></td>"   ts.writeline "<td width=20%>"   ts.writeline "<p align=center><b>% Free</b></td>"   ts.writeline "</tr>"   ts.writeline "<tr>"   for i = 0 to cnt  
    ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>"     ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>"     ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>"     ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>"     ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>"     ts.writeline "</tr>"   next  
 
  ts.writeline "</table>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<p> </p>"   ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>"   ts.WriteLine "</CENTER></BODY>"   ts.WriteLine "</HTML>"   ts.close
End Function
 
Function CreateBDAccess()
 
  'Nom du fichier MSAccess
  Fichier = InputBox(msgTexte, "Saisie du fichier à créer", "C:\MaBase.MDB" )
  'Établie un objet ADO pour déplacement dans objet
  Set objConnection = CreateObject("ADODB.Connection" )  
  Set objRecordset = CreateObject("ADODB.Recordset" )  
  'Créer un objet fichier pour atteindre le fichier mdb
  Set oFS = CreateObject("Scripting.FileSystemObject" )  
  'Lecteur courant ?
  Disque = Mid(Fichier, 1, 2)  
  'Capture du lecteur
  Set oLecteur = oFS.GetDrive(Disque)  
  'Lecteur prêt ?
  If (oLecteur.IsReady) Then
    'Accroche le fichier sur le moteur de recherche
    AccesFichier = MoteurDeRecherche & Fichier
    'Ouverture du fichier access  
    objConnection.Open AccesFichier  
    'Création d'un ensemble "recordset" sur les données souhaité
    objRecordset.Open "SELECT * FROM MaTable" , objConnection, adOpenStatic, adLockOptimistic  
  End If
 
  For i = 0 to cnt  
    objRecordset.AddNew
     
    objRecordset("Champs1" ) = Aff(i)
    objRecordset("Champs2" ) = Aff0(i)
    objRecordset("Champs3" ) = Aff1(i)
    objRecordset("Champs4" ) = Aff2(i)
    objRecordset("Champs5" ) = Aff3(i)
 
    objRecordset.Update  
  Next  
End Function

Reply

Marsh Posté le 22-06-2005 à 09:21:16    

En faite avec le code ci dessus ca creer Une nouvelle Base de donnée si j ai bien compris biensur desolé je debute lool
 
En faite MOi ma base est deja creé sous Access elle est Nommé "BdDisque" avec une Table Applée "EspaceDisque" ET qui contient les champs suivants:
"Nom"
"Drive"
"Size"
"Free"
"Pourcentage"
"Date "
Moi je souhaite UNIQUEMENT ENVOYER LES DONNEES RENVOYe PAR MON SCRIPT dans ma base de données que j ai deja creé sur Access . Il faut que a chaque lancement du script les données soit memorise dans cette base voila
ALors si Lupin ou quelqu un pouvait m aider se serais sympa merci
voici mon script qui fonctionne deja pour la recuperation des données:
 
'----------------------------------------------------------
' Script de description des Hdd dans une page web
' ----------------------------------------------------------
Dim cnt
dim Aff()
dim Aff0()
dim Aff1()
dim Aff2()
dim Aff3()
 
cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)
 
Select Case WScript.Arguments.Count
Case 0
' Default if none specified is local computer ("." )
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputer = objItem.Name
Next
Case 1
' Command line parameter can either be a computer name
' or "/?" to request online help
strComputer = Wscript.Arguments(0)
if InStr( strComputer, "?" ) > 0 Then Syntax
Case Else
' Maximum is 1 command line parameter
Syntax
End Select
 
Display( strComputer )
 
Function Display( strComputer )
On Error Resume Next
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
If Err.Number Then
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
" " & Err.Description
Err.Clear
Syntax
End If
On Error GoTo 0
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48)
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colItems
Aff(cnt) = strComputer
Aff0(cnt) = objItem.Name & vbTab
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _
vbCrLf
cnt = cnt + 1
Redim Preserve Aff(cnt)
Redim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
End Function
 
' ----------------------------------------------------------
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject" )
DestHtml = "hd.html"
CreateHTML DestHTML
 
Sub CreateHTML(filename)
dim ts
set ts=fso.CreateTextFile(filename,true)
ts.writeline "<HTML>"
ts.WriteLine "<BODY>"
ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>"
ts.writeline "<table border=1 cellspacing=1 width=100%>"
ts.writeline "<tr>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Name</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Drive</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Size</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Free</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>% Free</b></td>"
ts.writeline "</tr>"
ts.writeline "<tr>"
for i = 0 to cnt
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>"
ts.writeline "</tr>"
next
 
ts.writeline "</table>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>"
ts.WriteLine "</CENTER></BODY>"
ts.WriteLine "</HTML>"
ts.close
End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed