pfeffis 11 Geschrieben 19. Oktober 2007 Melden Teilen Geschrieben 19. Oktober 2007 Hi @all! Brauche mal wieder eure Hilfe. Möchte ohne kostenpflichtige zusatz tools die festplattenkapazitäten der einzelnen server (ca. 15) überwachen. Dachte da an ein vb script. Leider komme ich nur bis zur lokalen prüfung, sprich laufwerk c:. Das script sieht wie folgt aus: Set fs = CreateObject("Scripting.FileSystemObject") Set Drive = fs.GetDrive("C:\") free = Drive.FreeSpace MsgBox "Auf C: frei: " & FormatNumber(free/1024^2,2) & " MB" Kann ich es überhaupt realisieren alle Laufwerke der einzelnen Server zentral abzufragen? Hätte das ganze gerne in einer csv Datei gespeichert. Bin für jeden Tipp dankbar. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. Oktober 2007 Melden Teilen Geschrieben 19. Oktober 2007 Ich hab das mal so gemacht, dass ich vorher Laufwerk Z: mit dem entspr. Serverlaufwerk (z.B. \\server\c$) verbunden, Freespace ermittelt und dann LW Z: wieder getrennt hab. Das Ganze in ner Schleife durch alle Server. Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 19. Oktober 2007 Autor Melden Teilen Geschrieben 19. Oktober 2007 na das hört sich doch auch ganz net an. nur mit schleifen hab ich s nicht so. in einer batch mit goto :xy oder meinst du das dann? Hast du den "alten" code denn noch? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. Oktober 2007 Melden Teilen Geschrieben 19. Oktober 2007 Hatte es als VB-Tool mit Progressbar gebastelt. Hab den Code jetzt auf VBS mit CSV-Datei angepasst. Ich hoffe, du kommst damit klar. Kommentare sind keine drin ;) const gDrive2Use="Z:" dim arrPath(4) arrPath(0)="\\server1\d$" arrPath(1)="\\server2\d$" arrPath(2)="\\server1\c$" arrPath(3)="\\server2\c$" gstrCSV="C:\ServerDiskSpace-" & Date() & ".csv" 'On Error Resume Next Set FSO=WScript.CreateObject("Scripting.Filesystemobject") Set txtStreamOut = FSO.CreateTextFile(gstrCSV,2) ok = (Err.number = 0) if ok then on error goto 0 txtStreamOut.WriteLine "UNC-Pfad;MB Frei" For i = 0 To 3 txtStreamOut.WriteLine CheckSpace(i) Next end if MsgBox "Fertig!" & chr(13) & "CSV-Datei: " & gstrCSV Function CheckSpace(lngPos) strPath = arrPath(i) If ConnectLW(gDrive2Use, arrPath(i), False) = 0 Then CheckSpace = arrPath(i) & ";" & GetDiskSpaceString(gDrive2Use) Else CheckSpace = arrPath(i) & ";nicht gefunden oder " & gDrive2Use & " wird bereits verwendet!" End If DisconnectLW gDrive2Use End Function Function GetDiskSpaceString(strLW) On Error Resume Next Set fs = CreateObject("Scripting.FileSystemObject") Set Drive = fs.GetDrive(strLW) free = Drive.FreeSpace GetDiskSpaceString = FormatNumber(free/1024^2,2) End Function Function ConnectLW(strLW, strPath, boolInformOnErr) Dim counter Set wshnet = CreateObject("WScript.Network") counter = 0 Do counter = counter + 1 On Error Resume Next wshnet.MapNetworkDrive strLW, strPath Select Case Err.Number Case 0 'kein Fehler 'If boolInformOnErr Then MsgBox "Laufwerk " & strLW & " erfolgreich mit " & strPath & " verbunden!" counter = 4 Case -2147024843 'Netzwerkpfad nicht gefunden If boolInformOnErr Then MsgBox "Pfad " & strPath & " nicht gefunden!" & Chr(13) & Err.Description counter = 4 Case -2147024811, -2147023694 'LW wird bereits benutzt 'If boolInformOnErr Then MsgBox "Laufwerk " & strLW & " bereits belegt!" & chr(13) & Err.Description On Error Resume Next wshnet.RemoveNetworkDrive strLW If Err.Number <> 0 Then 'Ressource wird verwendet und kann nicht getrennt werden If boolInformOnErr Then MsgBox "Laufwerk " & strLW & " kann nicht getrennt werden!" & Chr(13) & Err.Description counter = 4 End If Case Else If boolInformOnErr Then MsgBox Err.Number & Chr(13) & Err.Description counter = 4 End Select Loop Until counter > 3 ConnectLW = Err.Number On Error GoTo 0 Set wshnet = Nothing End Function Sub DisconnectLW(strLW) Set wshnet = CreateObject("WScript.Network") On Error Resume Next Do wshnet.RemoveNetworkDrive strLW If Err.Number <> 0 Then 'Ressource wird verwendet und kann nicht getrennt werden counter = counter + 1 Else counter = 4 End If Loop Until counter > 3 Set wshnet = Nothing End Sub Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 19. Oktober 2007 Autor Melden Teilen Geschrieben 19. Oktober 2007 vielen dank. ererstellt mir die csv datei aber leider ohne inhalt: nicht gefunden oder Z: wird bereits verwendet! ??????? Laufwerk z: ist lokal nicht vorhanden Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. Oktober 2007 Melden Teilen Geschrieben 19. Oktober 2007 Hast du denn die Variablen "arrPath" entspr. gesetzt? Sind ja nur Beispielpfade drin! Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 19. Oktober 2007 Autor Melden Teilen Geschrieben 19. Oktober 2007 ja, hab da meine server plus den standardfreigabenamen eingetragen und das ganze als vbs ausgeführt!? Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 19. Oktober 2007 Melden Teilen Geschrieben 19. Oktober 2007 hi, die Festplattendaten kann man auch remote abfrage mit win32_logicaldisk z.b. wmic /node:<remoteclient> path win32_logicaldisk where "Caption='C:'" get Size,Caption /value cu blub Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 19. Oktober 2007 Melden Teilen Geschrieben 19. Oktober 2007 Das von blub ist auch gut. Könnte man in einer Batch verarbeiten und die Ausgabe in eine Datei umleiten... Ansonsten: Ändere mal den Code der Funktion "CheckSpace" so ab: Function CheckSpace(lngPos) [color="DarkRed"] lngConnectLWErr = ConnectLW(gDrive2Use, arrPath(i), False) If lngConnectLWErr = 0 Then [/color] CheckSpace = arrPath(i) & ";" & GetDiskSpaceString(gDrive2Use) Else CheckSpace = arrPath(i) & ";nicht gefunden oder " & gDrive2Use & " wird bereits verwendet! [color="darkred"]Fehler: " & lngConnectLWErr[/color] End If DisconnectLW gDrive2Use End Function dann schreibt er die Fehlernummer mit raus, warum er das Laufwerk nicht verbinden konnte. Zitieren Link zu diesem Kommentar
twenty 12 Geschrieben 20. Oktober 2007 Melden Teilen Geschrieben 20. Oktober 2007 Schaue Dir Nagios an. Ist nicht schwer einzurichten, und funktioniert sehr zuverlässig. Nagios: Home Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 22. Oktober 2007 Autor Melden Teilen Geschrieben 22. Oktober 2007 danke. Der Zusatz Code nutzt leider nichts, spuckt mir keinen fehler aus und in der csv datei steht noch immer: nicht gefunden oder Z: wird bereits verwendet! :( Funktioniert denn der Code bei dir? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 22. Oktober 2007 Melden Teilen Geschrieben 22. Oktober 2007 Ja, bei mir funktioniert er... Allerdings ist der Code am Anfang noch ein wenig unvollständig! Erzeugt ja immer ne Datei mit Datum. Überschreibt eine bestehende jedoch nicht! Deshalb steht bei Dir vermutlich immer noch "nicht gefunden...". Vermutlich hast du das erste Mal den Code mit flaschen Pfaden aufgerufen? Ich hab's jetzt noch ein wenig umgebaut. Ersetzte mal den oberen Teil zwischen den arrPfad-Deklarationen und der Function CheckSpace hiermit: gstrCSV="C:\ServerDiskSpace-" & Date() & ".csv" On Error Resume Next Set FSO=WScript.CreateObject("Scripting.Filesystemobject") if FSO.FileExists(gstrCSV) then if MsgBox("Datei existiert bereits! Überschreiben?",vbYesNo) = vbYes then varOK = true else varOK = false if varOK then Set txtStreamOut = FSO.OpenTextFile(gstrCSV,2) end if else varOK = true Set txtStreamOut = FSO.CreateTextFile(gstrCSV,2) end if ok = (Err.number = 0) if (ok and varOK) then on error goto 0 txtStreamOut.WriteLine "UNC-Pfad;MB Frei" For i = 0 To 3 txtStreamOut.WriteLine CheckSpace(i) Next MsgBox "Fertig!" & chr(13) & "CSV-Datei: " & gstrCSV else if not ok then MsgBox "Datei " & gstrCSV & " konnte nicht erzeugt/geöffnet werden!" end if Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 22. Oktober 2007 Autor Melden Teilen Geschrieben 22. Oktober 2007 also mal ganz dickes danke an dich!!! War aber auch ein bissl zu ****. Man sollte bei der Ausführung des Scriptes schon darauf achten, dass man Zugriff auf die Server Freigaben ($) hat...:cool: Vielen Dank Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 22. Oktober 2007 Melden Teilen Geschrieben 22. Oktober 2007 Das sollte man in der Tat ;) Freut mich, dass es inzwischen wohl funktioniert! Grüße, Frank Zitieren Link zu diesem Kommentar
pfeffis 11 Geschrieben 23. Oktober 2007 Autor Melden Teilen Geschrieben 23. Oktober 2007 Eine Kleinigkeit hätte ich da doch noch. Wie kann ich es realisieren, dass er in diesem Script erst dann eine Datei erstellt wenn der verfügbare Festplattenplatz weniger als 10 GB beträgt? Hintergrund: So könnte ich mir tägliche Emails sparen und würde via batch mir diese Datei nur schicken lassen wenn sie erstellt wurde, sprich die freien Festplattenkapazitäten unter 10 GB sind. müsste ja irgendwie so aus sehen oder!? if GetDiskSpaceString(gDrive2Use) < 10 then müsste aber bestimmt das komplette script umstellen wegen der abfrage reihenfolge, oder? Vielen Dank vorab Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.