Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1836 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU] script d'avertissement auto pour disque plein

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] script d'avertissement auto pour disque plein

n°1771073
kenji_lol
Pas de bras pas de chocolat !!
Posté le 08-08-2008 à 11:05:29  profilanswer
 

Bonjour,
 
Apres avoir chercher sur le net je m'adresse à vous, et en plus je ne sais pas trop comment diriger ma rechercher sur mon ami google.
 
 
J'aimerai savoir si quelqu'un connait un script qui enverrai un message quand mon disque sur mon server atteind les 90% par ex..
 
 
 
Merci pour vos réponses


Message édité par kenji_lol le 29-08-2008 à 14:18:16
mood
Publicité
Posté le 08-08-2008 à 11:05:29  profilanswer
 

n°1774492
kenji_lol
Pas de bras pas de chocolat !!
Posté le 19-08-2008 à 15:46:37  profilanswer
 

UP  
 
Personne ne connait un script ou un batch qui pourrai surveiller l'espace disque sur un server ?

n°1774548
tecoxe
Posté le 19-08-2008 à 17:41:18  profilanswer
 

J'ai fais ça il y a un petit moment, c'est en place sur plusieurs serveurs avec une tache planifiée et ça fonctionne bien.

 

Ca ne sert pas que pour l'espace disque mais tu peux activer/désactiver les controles au besoin.

 
Code :
  1. 'Derniére modification le 03.17.2006 11:00
  2. '################################################
  3. 'Constantes pour le réglage des alarmes
  4. '################################################
  5. Const LimiteLecteurSysteme = 0.1 'décimales
  6. Const LimiteLecteurAutre = 0.05 'décimales
  7. Const LimiteUtilisationCpu = 0.8 'décimales
  8. Const LimiteMemoireDisponible = 800 'en Mo
  9. Const FichierDeSortie = "c:\Wmi_SysInfo.txt"
  10. Const AdresseEmailDestinataire = ""
  11. Const AdresseServeurSmtp = ""
  12. Const ConsoleDebug = 1
  13. Const EnvoyerUnMail = 1
  14. Const NomDeMachine = "." 'Mettre un . pour la machine locale
  15. Const SurveilleCpu = 1
  16. Const SurveilleDisk = 1
  17. Const SurveilleMemoire = 1
  18. Const AfficherUptime = 0
  19. '################################################
  20. 'Déclarations
  21. Const ForAppending = 8
  22. Const cdoSendUsingPort = 2
  23. Dim fso, f1, OutputLine, HtmlBody, Alarme
  24. Set SC = New SpaceChecker
  25. Set SC = Nothing
  26. Alarme = 0
  27. Class SpaceChecker
  28. Private Sub Class_Initialize()
  29. Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  30. Set colSettings = WMIService.ExecQuery ("Select * from Win32_ComputerSystem" )
  31. For Each objComputer in colSettings
  32.     SystemName = objComputer.Name
  33.     Domain = objComputer.Domain
  34. Next
  35. Set colSettings = Nothing
  36. Set fso = CreateObject("Scripting.FileSystemObject" )
  37. 'Set f1 = fso.CreateTextFile(FichierDeSortie, false)
  38. 'f1.close
  39. Set f1 = fso.OpenTextFile(FichierDeSortie & "." & SystemName, ForAppending, true,0)
  40. HtmlBody = "<HTML>"
  41. HtmlBody = HtmlBody & "<HEAD>"
  42. HtmlBody = HtmlBody & "<BODY>"
  43. HtmlBody = HtmlBody & "<b>" & date & "@" & time & "</b></br></br>"
  44. If AfficherUptime = 1 Then
  45.   HtmlBody = HtmlBody & "<b>Uptime : " & GetUptime & " heures</b></br></br>"
  46.   MyEcho "Uptime : " & GetUptime & " heures"
  47. End If
  48. OutputLine = date & "@" & time & "|" & SystemName & "@" & Domain & "|"
  49. If SurveilleDisk = 1 Then
  50.   Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  51.   Set colDisks = WMIService.ExecQuery("Select * from Win32_LogicalDisk" )
  52.  
  53.   For each Disk in colDisks
  54.    If Disk.DriveType = 3 Then
  55.     If Lcase(Disk.DeviceID) = "c:" Then
  56.      LimiteLecteur = LimiteLecteurSysteme
  57.     Else
  58.      LimiteLecteur = LimiteLecteurAutre
  59.     End If
  60.       If (Disk.FreeSpace/Disk.Size) < LimiteLecteur Then
  61.         HddStatut="Depassement"
  62.       Else
  63.        HddStatut="Normal"
  64.       End If
  65.     MyEcho Disk.DeviceID & "|" & (Disk.FreeSpace/1000000) & "Mo/" & (Disk.Size/1000000) & "Mo|" & HddStatut
  66.     OutputLine =  OutputLine & "HDD=" & Disk.DeviceID & "|" & (Disk.FreeSpace/1000000) & "Mo|" & (Disk.Size/1000000) & "Mo|" & HddStatut & "|"
  67.     If HddStatut="Depassement" Then
  68.      HtmlBody = HtmlBody & "<b><font color=red>Lecteur : " & Disk.DeviceID & "</br>Espace libre : " & (Disk.FreeSpace/1000000) & "Mo / " & (Disk.Size/1000000) & "Mo</br>Etat : " & HddStatut & "</b></font></br></br>"
  69.      Alarme = 1
  70.     Else
  71.      HtmlBody = HtmlBody & "<b>Lecteur : " & Disk.DeviceID & "</br>Espace libre : " & (Disk.FreeSpace/1000000) & "Mo / " & (Disk.Size/1000000) & "Mo</br>Etat : " & HddStatut & "</b></br></br>"
  72.     End If
  73.    End If
  74.   Next
  75. End If
  76. If SurveilleCpu = 1 Then
  77.   If CPUUtil() > LimiteUtilisationCpu * 100 Then
  78.    CpuStatut="Depassement"
  79.    HtmlBody = HtmlBody & "<font color=red><b>Cpu utilisé : " & CPUUtil() & "%</br>Etat : " & CpuStatut & "</b></font></br></br>"
  80.    Alarme = 0
  81.   Else
  82.    CpuStatut="Normal"
  83.    HtmlBody = HtmlBody & "<b>Cpu utilisé : " & CPUUtil() & "%</br>Etat : " & CpuStatut & "</b></br></br>"
  84.   End If
  85.   MyEcho "CPU=" & CPUUtil() & "%|" & CpuStatut
  86.   OutputLine =  OutputLine & "CPU=" & CPUUtil() & "%|" & CpuStatut
  87. End If
  88. If SurveilleMemoire = 1 Then
  89. If GetFreeMem() > LimiteMemoireDisponible Then
  90.  MemStatut = "Depassement"
  91.    HtmlBody = HtmlBody & "<font color=red><b>Mémoire disponible : " & GetFreeMem() & "Mo</br>Etat : " & MemStatut & "</b></font></br>"
  92.    Alarme = 1
  93. Else
  94.  MemStatut = "Normal"
  95.    HtmlBody = HtmlBody & "<b>Mémoire disponible : " & GetFreeMem() & "Mo</br>Etat : " & MemStatut & "</b></br>"
  96. End If
  97.   MyEcho "MEM_LIBRE=" & GetFreeMem() & "Mo|" & MemStatut
  98.   OutputLine =  OutputLine & "|MEM_LIBRE=" & GetFreeMem() & "Mo|" & MemStatut
  99. End If
  100. f1.writeline OutputLine
  101. f1.close
  102. If Alarme=1 And EnvoyerUnMail = 1 Then
  103. MyEcho "Envoi d'un mail !"
  104. Sendmail()
  105. Else
  106. MyEcho "Pas de mail"
  107. End If
  108. Set colDisks = Nothing
  109. Set WMIService = Nothing
  110. End Sub
  111. '################################################
  112. 'Fonctions suplémentaires
  113. '################################################
  114. Private Sub Class_Terminate()
  115. End Sub
  116. Function MyEcho(pMsg)
  117.   If ConsoleDebug = 1 Then
  118.    Wscript.Echo pMsg
  119.   End If
  120. End Function
  121. Function CPUUtil()
  122.   On Error Resume Next
  123.   WQLQuery = "Select deviceid, loadpercentage from Win32_Processor where DeviceID='CPU0'"
  124.   Set WMS = GetObject("winmgmts:\\" & NomDeMachine & "\root\cimv2" )
  125.   Set CPU = WMS.ExecQuery(WQLQuery,,48)
  126.   For Each CPUinfo in CPU
  127.   CPUUtil = CPUinfo.LoadPercentage
  128.   Next
  129.   Set WMS = Nothing
  130.   Set CPU = Nothing
  131. End Function
  132. Function CPUUtilAdvanced(LimiteUtilisationCpu)
  133.   Set WMS = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  134.   set Refresher = CreateObject("WbemScripting.Swbemrefresher" )
  135.   Set CPU = objRefresher.AddEnum(WMS, "Win32_PerfFormattedData_PerfOS_Processor" ).objectSet
  136.   intThresholdViolations = 0
  137.   Refresher.Refresh
  138.   Do
  139.       For each intProcessorUse in CPU
  140.           If intProcessorUse.PercentProcessorTime > LimiteUtilisationCpu Then
  141.               intThresholdViolations = intThresholdViolations + 1
  142.                   If intThresholdViolations = 10 Then
  143.                       intThresholdViolations = 0
  144.                   End If
  145.           Else
  146.               intThresholdViolations = 0
  147.           End If
  148.       Next
  149.       Wscript.Sleep 6000
  150.       Refresher.Refresh
  151.   Loop
  152.   CPUUtilAdvanced = 0
  153.   Set WMS = Nothing
  154.   Set CPU = Nothing
  155.   Set Refresher = Nothing
  156. End Function
  157. Private Function GetUptime()
  158.   Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  159.   Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem" )
  160.  
  161.   For Each objOS in colOperatingSystems
  162.       dtmBootup = objOS.LastBootUpTime
  163.       dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
  164.   dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)     
  165.       GetUptime = dtmSystemUptime
  166.   Next
  167. End Function
  168. Function WMIDateStringToDate(dtmBootup)
  169. WMIDateStringToDate = CDate(Mid(dtmBootup, 7, 2) & "/" & Mid(dtmBootup, 5, 2) & "/" & Left(dtmBootup, 4) & " " & Mid (dtmBootup, 9, 2) & ":" & Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, 13, 2))
  170. End Function
  171. Private Function GetFreeMem()
  172. On Error Resume Next
  173. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  174.   set objRefresher = CreateObject("WbemScripting.SWbemRefresher" )
  175.   Set objMemory = objRefresher.AddEnum(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory" ).objectSet
  176.   objRefresher.Refresh
  177.   objRefresher.Refresh
  178.  
  179.    For each intAvailableBytes in objMemory
  180.     Mem = intAvailableBytes.AvailableMBytes
  181.    Next
  182. GetFreeMem = Mem
  183. Set objRefresher = Nothing
  184.   Set objMemory = Nothing
  185.  
  186. End Function
  187. Private Function Divide(int1,int2)
  188.   Divide = 0
  189.   If CDbl(int1) > 0 And CDbl(int2) > 0 Then
  190.   Divide = int1 / int2
  191.   End If
  192. End Function
  193. Private Function SendMail()
  194. set iMsg = CreateObject("CDO.Message" )
  195. set iConf = CreateObject("CDO.Configuration" )
  196. Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  197. Set colSettings = WMIService.ExecQuery ("Select * from Win32_ComputerSystem" )
  198. For Each objComputer in colSettings
  199.     SystemName = objComputer.Name
  200.     Domain = objComputer.Domain
  201. Next
  202. Set Flds = iConf.Fields
  203. HtmlBody = HtmlBody & "</BODY>"
  204. HtmlBody = HtmlBody & "</HTML>"
  205. If AdresseServeurSmtp <> "" And AdresseEmailDestinataire <> "" Then
  206.   With Flds
  207.   .Item("http://schemas.microsoft.com/cdo/configuration/sendusing" ) = cdoSendUsingPort
  208.   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver" ) = AdresseServeurSmtp
  209.   .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" ) = 10
  210.   .Update
  211.   End With
  212.  
  213.   With iMsg
  214.   Set .Configuration = iConf
  215.   .To = AdresseEmailDestinataire
  216.   .From = "SysInfo@" & SystemName
  217.   .Subject = "SysInfo : " & Domain & "\" & SystemName
  218.   .HTMLBody = HtmlBody
  219.   .Send
  220.   End With
  221. End If
  222. End Function
  223. Private Function CheckNumber(int1)
  224. CheckNumber = 0
  225. If IsNumeric(int1) Then
  226. CheckNumber = int1
  227. End If
  228. End Function
  229. End Class


Message édité par tecoxe le 19-08-2008 à 17:43:52
n°1774737
kenji_lol
Pas de bras pas de chocolat !!
Posté le 20-08-2008 à 09:42:37  profilanswer
 

Super merci beaucoup je vien de tester ca fonctionne pas mal reste plus qu'a comprendre un peu ton code...
 
Il y a possiblité d'envoie j'ai vu ?

n°1774745
tecoxe
Posté le 20-08-2008 à 10:16:41  profilanswer
 

Salut,

 

Tu renseignes ces deux constantes :

 

# Const AdresseEmailDestinataire = ""
# Const AdresseServeurSmtp = ""

 

- tu peux mettre une adresse email, ou l'adresse d'une liste de distribution
- tu dois renseigner l'adresse de ton serveur smtp, en admettant qu'il accepte les connexions anonyme, l'email sera envoyé au format :
   SysInfo@"le nom de la machine"

 


Cette  constante active ou désactive (1/0) l'envoi de mail.
# Const EnvoyerUnMail = 1

Message cité 1 fois
Message édité par tecoxe le 20-08-2008 à 11:20:40
n°1775836
kenji_lol
Pas de bras pas de chocolat !!
Posté le 22-08-2008 à 09:59:56  profilanswer
 

Salut j'ai tester et franchement c'est pas mal, pas mal du tout même.
Question :  
 
Peux t'ont shunter les popup et laisser que l'envoie de mail ? Si oui comment
 
A quoi servent les constantes au début du code ?
Comment éviter d'avoir le resultat sous forme de 2520,241198715 Mo, tout ce qu'il y a apres la virgule ne me sert pas peux t 'on l'enlever ?
 

Citation :

# '################################################
# 'Constantes pour le réglage des alarmes
# '################################################
# Const LimiteLecteurSysteme = 0.1 'décimales
# Const LimiteLecteurAutre = 0.05 'décimales
# Const LimiteUtilisationCpu = 0.8 'décimales
# Const LimiteMemoireDisponible = 800 'en Mo
# Const FichierDeSortie = "c:\Wmi_SysInfo.txt"
# Const AdresseEmailDestinataire = ""
# Const AdresseServeurSmtp = ""
# Const ConsoleDebug = 1
# Const EnvoyerUnMail = 1
# Const NomDeMachine = "." 'Mettre un . pour la machine locale
# Const SurveilleCpu = 1
# Const SurveilleDisk = 1
# Const SurveilleMemoire = 1
# Const AfficherUptime = 0
# '################################################


 
Merci pour ta reponse

Message cité 1 fois
Message édité par kenji_lol le 22-08-2008 à 10:00:17
n°1775891
kenji_lol
Pas de bras pas de chocolat !!
Posté le 22-08-2008 à 11:22:21  profilanswer
 

tecoxe a écrit :

Salut,
 
Tu renseignes ces deux constantes :  
 
# Const AdresseEmailDestinataire = ""
# Const AdresseServeurSmtp = ""
 
- tu peux mettre une adresse email, ou l'adresse d'une liste de distribution
- tu dois renseigner l'adresse de ton serveur smtp, en admettant qu'il accepte les connexions anonyme, l'email sera envoyé au format :
   SysInfo@"le nom de la machine"
 
 
Cette  constante active ou désactive (1/0) l'envoi de mail.
# Const EnvoyerUnMail = 1


 
 
Je fais des test depuis ce matin, mas j'ai un problème pour l'envoie de mail, j'ai un serveur Exchange à qui j'ai activer les connexion anonyme (enfin je pense), mais il mets une erreur sur la ligne ".send", donc je pense que j'ai pas fais quelque chose sur le serveur Exchange, pourrais tu m'éclairer la dessus si tu connais.  
Merci

n°1775962
tecoxe
Posté le 22-08-2008 à 13:41:02  profilanswer
 

kenji_lol a écrit :

Salut j'ai tester et franchement c'est pas mal, pas mal du tout même.
Question :  
 
Peux t'ont shunter les popup et laisser que l'envoie de mail ? Si oui comment
 
A quoi servent les constantes au début du code ?
Comment éviter d'avoir le resultat sous forme de 2520,241198715 Mo, tout ce qu'il y a apres la virgule ne me sert pas peux t 'on l'enlever ?
 
Merci pour ta reponse


 
Je l'exécute en l'appelant avec cscript.exe, tu coup les messages sont affichés dans une fenêtre de ligne de commande (cmd.exe)
Mais si tu veux complétement supprimer les messages interactifis tu passes la constantes ConsoleDebug à 0.
 
# '################################################
# Const LimiteLecteurSysteme = 0.1 'décimales >> Le seuil d'alerte pour le disque systéme 0.1 = 10%
# Const LimiteLecteurAutre = 0.05 'décimales >> Le seuil d'alerte pour les autres disques physiques (pas les netuse par exemple) 0.05 =5%
# Const LimiteUtilisationCpu = 0.8 'décimales >> Le seule d'alerte de l'lutilisation Cpu 0.8 = 80%
# Const LimiteMemoireDisponible = 800 'en Mo >> Mémoire vive disponible
# Const FichierDeSortie = "c:\Wmi_SysInfo.txt" >> Le fichier de log  
# Const AdresseEmailDestinataire = "" >> Une adresse email au format toto@pipo.fr
# Const AdresseServeurSmtp = "" >> le nom dns ou l'ip de ton serveur de messagerie
# Const ConsoleDebug = 1 >> Affichage des résultat de chaque alerte dans la console/popup (1 ou 0)
# Const EnvoyerUnMail = 1 >> Ben euh... Envoyer ou pas le mail. (1 ou 0)
# Const NomDeMachine = "." 'Mettre un . pour la machine locale
# Const SurveilleCpu = 1 >> Activer/Désactiver la surveillance du Cpu (1 ou 0)
# Const SurveilleDisk = 1 >> Activer/Désactiver la surveillance des disques (1 ou 0)
# Const SurveilleMemoire = 1 >> Activer/Désactiver la surveillance de la mémoire (1 ou 0)
# Const AfficherUptime = 0 >> Récupérer le temps depuis lequel la machine est démarrée. (1 ou 0)
# '################################################
 
Pour limiter le nombre de chiffres apres la virgule tu peux remplacer :  
 
(Disk.FreeSpace/1000000) par FormatNumber((Disk.FreeSpace/1000000),2))
et
(Disk.Size/1000000) par FormatNumber((Disk.Size/1000000),2)
 
Ce qui devrait te donner juste 2 chiffres aprés là virgule.
 
 
Sinon pour le problème avec le .Send post le message d'erreur ici pour voir.

n°1776008
kenji_lol
Pas de bras pas de chocolat !!
Posté le 22-08-2008 à 14:44:52  profilanswer
 

Trop fort t'assure :) (en meme temps c'est ton script lol)
 
Pour mon erreur d'envoie de mail voici le message :  
 

Citation :

C'est dans la fcontion sendmail()
a la ligne -> .send
 
Erreur : Le transport a échoué dans sa connexion au serveur
 
Code : 80040213
Source CDO.Message.1


 
J'ai regarder un peu sur le net ce que je pouvais trouver sur ce code et apparement c'est du à l'utilisation d'un composant COM qui ne serait pas installer sur mon server 2003 ! Je sais pas trop...

n°1776037
tecoxe
Posté le 22-08-2008 à 15:18:44  profilanswer
 

Hum bizzare, je m'en sert sur des 2003 aussi.
Et le script utilise la bonne version de CDO, celle qui fonctionne sous 2003.
 
Tu es sur que ton smtp est accessible depuis ces machines ? Tu as essayé un telnet sur le port 25 ?

mood
Publicité
Posté le 22-08-2008 à 15:18:44  profilanswer
 

n°1776046
kenji_lol
Pas de bras pas de chocolat !!
Posté le 22-08-2008 à 15:26:39  profilanswer
 

Je lance le script de ma machine donc je pense qu'il n y pas de soucis

 

[EDIT]
Peut etre pas en fait :

 

Connexion à smtp.serveur-1...Impossible d'ouvrir une connexion à l'hôte, sur le port 25: Échec lors de la connexion

 

[EDIT2]
J'ai fait un netstat -a mon port est bien à l'ecoute par contre je ne sais pas si ca joue mais avec le firewall apparement il est renommer en smtp


Message édité par kenji_lol le 22-08-2008 à 15:47:16
n°1776130
tecoxe
Posté le 22-08-2008 à 16:42:09  profilanswer
 

Probablement ton firewall qui bloque les connexions anonymes à ton serveur smtp.

n°1779990
kenji_lol
Pas de bras pas de chocolat !!
Posté le 29-08-2008 à 14:17:55  profilanswer
 

Ca fonctionne SUper merci tecoxe.  :love:  :love:  
En fait je recvais bien le mail sauf que Outlook envoyai directement celui dans mes courrier indesirable et comme je vais jamais voir la dedans :)
 
Merci encore c'est cool  :pt1cable:  :pt1cable:  :)  :)  :)

n°1779998
MagicBuzz
Posté le 29-08-2008 à 14:29:48  profilanswer
 

:lol:

n°1927340
benzure
Posté le 28-09-2009 à 15:46:59  profilanswer
 

bonjour à tous
 
Le code de tecoxe est tres intéressant pour moi
 
je souhaite l'utiliser mais cependant je souhaiterai lui passer le nom de la machine en paramètre lors de l'appel du script
comment est ce que je peux faire
 
merci

n°1927377
tecoxe
Posté le 28-09-2009 à 17:24:04  profilanswer
 

Tu remplaces :
Const NomDeMachine = "."  à la ligne 16

 

par :

 

Dim NomDeMachine

 

If WScript.Arguments.Count >= 1 Then
  NomDeMachine = WScript.Arguments.Item(0)
Else
  NomDeMachine = "."
End If

 

Edit:
Par contre si tu le fais à distance il faut que tu ais les droits d'interroger le service wmi de la machine distante, j'ai pas testé ce cas là.


Message édité par tecoxe le 28-09-2009 à 17:25:53
n°1927500
benzure
Posté le 29-09-2009 à 10:14:09  profilanswer
 

Merci j'essai

n°1927508
benzure
Posté le 29-09-2009 à 10:24:38  profilanswer
 

A distance cela fonctionne tres bien dans mon cas:
maintenant il faut que je trouve un solution pour automatiser la chose.
 
genre un fichier texte qui contient l'ensemble du parc serveur.
j'utilise un logiciel de supervision qui stocke mes serveurs dans une base sql;
comment via une requete qui interrogerai m DB sql dans ce script je pourrait exécuter le sript pour chaque machine
 
une idée?

n°1927517
tecoxe
Posté le 29-09-2009 à 11:07:23  profilanswer
 

benzure a écrit :

A distance cela fonctionne tres bien dans mon cas:
maintenant il faut que je trouve un solution pour automatiser la chose.
 
genre un fichier texte qui contient l'ensemble du parc serveur.
j'utilise un logiciel de supervision qui stocke mes serveurs dans une base sql;
comment via une requete qui interrogerai m DB sql dans ce script je pourrait exécuter le sript pour chaque machine
 
une idée?


 
Quel type de bdd ?

n°1927523
benzure
Posté le 29-09-2009 à 11:33:22  profilanswer
 

c'est du sql express

n°1927543
tecoxe
Posté le 29-09-2009 à 12:08:45  profilanswer
 

Il me semble que tu peux interroger ton sql server express via un lien odbc dans un script vbs.
 
http://www.edugeek.net/forums/scri [...] erver.html

n°1928195
benzure
Posté le 01-10-2009 à 11:08:15  profilanswer
 

je souhaite supprimer mon fichier généré à la fin du script
voici la commande que j'ai ecrite mais pb
 
set f1= fso.deletefile(FichierDeSortie & "." & SystemName,true)
 
erreur :  Objet requis: 'fso.deletefile(...)'
 
je vois pas l'erreur

n°1928207
benzure
Posté le 01-10-2009 à 11:16:49  profilanswer
 

c'est bon j'ai trouvé le pb
 
solution :  
fso.deletefile FichierDeSortie & "." & SystemName,true

n°1928301
benzure
Posté le 01-10-2009 à 15:15:52  profilanswer
 

J'ai une autre demande.
 
Je souhaite par l'intermédiaire de ce script,
renseigner un fichier excel des données récoltées.
 
Par exemple si j'indique les colonnes se serai:
Nom serveur | Partition | Espace Libre| espace total |statut  
 
dans le but de faire des stats
 
comment puis je faire celà
 
merci pour vos réponses

n°1928404
tecoxe
Posté le 01-10-2009 à 23:03:32  profilanswer
 

Le script crée un fichier de log :
 
Const FichierDeSortie = "c:\Wmi_SysInfo.txt"
Les infos sont séparées par des pipes "|".

n°1928891
benzure
Posté le 05-10-2009 à 08:44:34  profilanswer
 

oui j'avais vu mais comment généré directement un xls.
Le but du document excel est d'être consulté par un autre équipe en rapidité

n°1928901
benzure
Posté le 05-10-2009 à 09:45:55  profilanswer
 

l'idée était : lors d'un dépassement, renseigner une ligne du fichier excel avec les données du fichierDESortie,

n°2346778
lenul 0001
Posté le 27-02-2020 à 09:16:20  profilanswer
 


bonjour,
 
Excusez moi de vous déranger mais j'utilise ce script si dessous pour surveiller l'espace disk mais il me reste un problème :fou:  :cry:  
c'est a dire si j'ai un serveur qui a un disk A, B et C et pour X raison sur un des disk,il est offline ou déconnecté, il ne me le signale pas!
avez vous une idée comment je pourrais absolument contrôler ces 3 disks sur mon serveur et que si il y en a un qui est absent ou autre ,le script se plante.
 
pourriez vous m'aider s'il vous plait ?
d'avance MERCI
 
le null (fabrice)
 
 
On Error Resume Next
 
'================================================================================================
'Constantes pour le réglage des alarmes surveillance disk
 
Const LimiteLecteurSysteme = 0.05 'décimales >> Le seuil d'alerte pour le disque systéme 0.05 = 5%
Const LimiteLecteurAutre = 0.04 'décimales >> Le seuil d'alerte pour les autres disques physiques (pas les netuse par exemple) 0.05 =5%  
Const UnitDeSortie = "\\FRSP0204\production\Cmd-sys\travail\" '>> Unité de sortie avec path
Const UnitDeSortie1 = "\\FRSP0204\production\Cmd-exp\travail\" '>> Unité de sortie avec path pour CTRL
Const FichierDeSortie = "DiskInfo.txt" '>> Le fichier de log
Const FichierDeSortie1 = "Liste-Ctrl.txt" '>> Le fichier pour le CTRL  
Const NomDeMachine = "FRSB0002" 'Mettre un . pour la machine locale
Const SurveilleDisk = 1 '>> Activer/Désactiver la surveillance des disques (1 ou 0)
Const Taux = 100  
'================================================================================================
'Déclarations
Const ForAppending = 8
Const cdoSendUsingPort = 2
Const ForReading = 1
Const ForWriting = 2
 
Dim fso, f1, OutputLine
Dim ofso, fic, texte, fe
 
Set SC = New SpaceChecker
Set SC = Nothing

Citation :

Citation :

[quote][quote]


[/quote][/quote]
Alarme = 0
 
Class SpaceChecker
 
Private Sub Class_Initialize()
 
Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
Set colSettings = WMIService.ExecQuery ("Select * from Win32_ComputerSystem" )
For Each objComputer in colSettings
    SystemName = objComputer.Name
    Domain = objComputer.Domain
Next
 
Set colSettings = Nothing
 
Set fso = CreateObject("Scripting.FileSystemObject" )
 
'Set f1 = fso.CreateTextFile(FichierDeSortie, false)
'f1.close
 
Set f1 = fso.OpenTextFile(UnitDeSortie & SystemName & "_" & FichierDeSortie, ForAppending, true,0)
 
OutputLine = SystemName
 
If SurveilleDisk = 1 Then
  Set WMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & NomDeMachine & "\root\cimv2" )
  Set colDisks = WMIService.ExecQuery("Select * from Win32_LogicalDisk" )
 
  For each Disk in colDisks
   If Disk.DriveType = 3 Then
    If Lcase(Disk.DeviceID) = "D:" Then
     LimiteLecteur = LimiteLecteurSysteme
    Else
     LimiteLecteur = LimiteLecteurAutre
    End If
      If (Disk.FreeSpace/Disk.Size) < LimiteLecteur Then
        HddStatut="ALERTE - de (" & Taux*LimiteLecteur & "% Seuil d'alerte) "  
      Else
       HddStatut="Normal + de (" & Taux*LimiteLecteur & "% Seuil d'alerte) "  
       
      End If
 
              OutputLine = OutputLine & VbCrLf & VbCrLf & HddStatut & "Espace libre sur " & Disk.DeviceID & "/" & (Disk.FreeSpace/1000000) & " Mo Sur un total de " & (Disk.Size/1000000) & " Mo" & VbCrLf
 
   End If
  Next
End If
 
f1.writeline OutputLine
f1.Close
Set colDisks = Nothing
Set WMIService = Nothing
End Sub
End Class
 
'extrait la 1er ligne du fichier pour le CTRL  
 
Set WshShell = WScript.CreateObject("WScript.Shell" )
Set ofso = CreateObject("Scripting.FileSystemObject" )
Set fic = ofso.OpenTextFile(UnitDeSortie & NomDeMachine & "_" & FichierDeSortie,1)
Set fe = ofso.OpenTextFile(UnitDeSortie1 & FichierDeSortie1,ForAppending,ForWriting,true)
 
fe.write(fic.ReadLine & vbCrLf)
fe.Close


---------------
Merci
n°2346794
mathieuu
Posté le 27-02-2020 à 10:46:00  profilanswer
 

[:sami_pp] Tu as creusé loin la, 11 ans  :sweat:  
 
Tu devrais plutôt te créer un topic tout neuf rien qu'à toi, pas grand monde va lire un topic résolu je pense

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU] script d'avertissement auto pour disque plein

 

Sujets relatifs
[Résolu] Tuer le processus EXCEL.EXE depuis une application vba/access[Résolu] - Sessions bizarres, pertes des variables
[resolu]3 div dont 2 avec float : la troisième ne passe pas en dessousmsgbox et userform en plein ecran
Script Réponse automatiqueappel d'un script shell dans un autre script shell
[VBA] chemin disque réseauConteneur de self-reference [resolu]
[Excel] Rechercher un élément différent - Résolu 
Plus de sujets relatifs à : [RESOLU] script d'avertissement auto pour disque plein


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR