12.09.2011, 02:45 UTC+2

Sie sind nicht angemeldet.

windows_updates.vbs bei check_mk 1.1.11ix

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

1

18.08.2011, 12:41

windows_updates.vbs bei check_mk 1.1.11ix

Hallo,

das Plugin windows_updates.vbs ist ja schon eine halbe Ewigkeit im Git und ich habe es immer wieder mal auf ein, zwei Rechnern getestet.

Leider musste ich immer feststellen, dass die Ausführungszeit des Agent deutlich Anstieg. Oft um 4, 5 Sekunden. Das ist natürlich nicht unproblematisch und ich hatte auch schon Hosts bei denen der Agent in ein Timeout lief.

Sehr bedauerlich, da ich schon gerne meine Windowsupdates kontrollieren würde....
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

2

19.08.2011, 09:43

Hallo serial,

ich habe das selbe Verhalten festgestellt, bei mir sind die Check-Durations auf den TEstmaschinen sogar um 30 Sek angestiegen (mit dem windows.update-Check).

Ist das normal, oder wird das noch verbessert werden können?

Grüße,

Patrick

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

3

19.08.2011, 13:48

Ich habe von VB Scripts leider keinen Plan und kann daher nicht beurteilen, ob an dem Script noch optimiert werden kann.

Ein Update-Check ist jetzt auch nichts, was ich jede Minute abfragen müsste. Da wäre es schön, wenn über die check_mk.ini unterschiedliche Intervalle eingestellt werden könnten.

Quellcode

1
2
3
4
5
6
7
8
[global]
    only_from = 127.0.0.1 10.204.65.2

[winperf]
    counters = 10332:msx_queues

[plugins]
    windows_updates.vbs = 3600 # 1 mal pro Stunde
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

ayk

Anfänger

Beiträge: 19

Geschlecht: Männlich

Anzahl Nagios-Server: 1

Nagios-Version(en): OMD 0.48 Nagios 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 2

Anzahl Services: 50

Betriebssystem(e): CentOS 5.5 x86_64

Plugin-Version(en): 1.4.15

NagVis-Version: 1.5.9

NDO-Version: 1

4

19.08.2011, 14:14

Hi,

ohne das ich mir das ganze angeguckt hätte aber man könnte z.B. das VB Skript aus dem Agenten entfernen, über den Scheduler starten und den Output in einer Textdatei speichern. Ein cmk Plugin liest die Datei aus, verpasst dem ganzen noch den passen Sektions Titel und liefert die Zeilen an cmk.

Die Datei würde dann meinetwegen 1 mal täglich erstellt und der check läuft halt im normalen Intervall darüber.

Ob das praktikabel ist mus man für sich selbst entscheiden.

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

5

19.08.2011, 14:49

Das ist zwar mit viel Aufwand verbunden, aber fürs erste keine schlechte Idee. Ich teste das mal am Montag.
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

ayk

Anfänger

Beiträge: 19

Geschlecht: Männlich

Anzahl Nagios-Server: 1

Nagios-Version(en): OMD 0.48 Nagios 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 2

Anzahl Services: 50

Betriebssystem(e): CentOS 5.5 x86_64

Plugin-Version(en): 1.4.15

NagVis-Version: 1.5.9

NDO-Version: 1

6

19.08.2011, 15:04

evtl. kann man sich den Scheduler sparen wenn man im Plugin das VB Skript 1x täglich im Hintergrund startet.
Etwa:

if uhrzeit == 13:15 then "starte im Hintergrund VB Skript"

Man braucht dabei ja nicht auf das Ergebnis warten. Beim nächsten Durchlauf liegt das Ergebnis ja in der Datei vor.

Oh je, oh je

Bastian Kuhn

Fortgeschrittener

Beiträge: 446

Geschlecht: Männlich

Wohnort: München

Anzahl Nagios-Server: 8

Hobbys: Jiu Jitsu, Klettern, MTB, Reisen

Nagios-Version(en): OMD 0.48

Verteiltes Monitoring: Ja

Redundantes Monitoring: Ja

Anzahl-Hosts: >4.000

Anzahl Services: >80.000

Betriebssystem(e): Linux, AIX, Windows

Plugin-Version(en): OMD 0.48

7

19.08.2011, 21:42

Zitat von »ayk«


Etwa:

if uhrzeit == 13:15 then "starte im Hintergrund VB Skript"



Da würde ich aber lieber machen, wenn Ergebnis älter als X dann starte. Wenn das Plugin nämlich dann um 13:16 aufgerufen wird, gibts kein Update!?
bastian-kuhn.de Mein Blog (Rund um Monitoring und mit deutschen Anleitungen zu check_mk)

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

8

22.08.2011, 11:21

Also ich habe das windows_updates.vbs-Konzekt jetzt mal auf geplante Tasks umgestellt:

Das Skript windows_updates2log.vbs muss man jetzt als geplaten Tasks ausführen lassen wann immer man will. (Man sollte sich dann aber bewusst sein, das die Anzeige in Nagios also nicht aktuell ist!).

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
' --------------------------------------------------------------------------------------------------------------
' windows_updates2log.vbs - check_mk agent plugin to monitor pending windows updates and put output into logfile
'
' To use this just place it in the plugins/ directory below the path of the
' check_mk_agent. After that an inventory run on the Nagios host should lead
' to a new inventorized service.
'
' Author: Lars Michelsen <>, 2011-03-21
' Edito:  Patrick Schlüter <>, 2011-08-21
' --------------------------------------------------------------------------------------------------------------

Option Explicit

Dim result, reboot, numImp, numOpt, important, opti
Dim updtSearcher, colDownloads, objEntry

Dim objFSO, objFile 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("windows_updates-log.txt")

objFile.WriteLine("<<>>")

If CreateObject("Microsoft.Update.AutoUpdate").DetectNow <> 0 Then
  'WScript.Echo "<<>>"
  WScript.Quit(0)
End If

Set updtSearcher = CreateObject("Microsoft.Update.Session").CreateUpdateSearcher

reboot = 0
numImp = 0
numOpt = 0

If CreateObject("Microsoft.Update.SystemInfo").RebootRequired Then
  reboot = 1
End If

Set result = updtSearcher.Search("IsInstalled = 0 and IsHidden = 0")
Set colDownloads = result.Updates

For Each objEntry in colDownloads
  if objEntry.AutoSelectOnWebSites Then
        if numImp = 0 Then
        important = objEntry.Title
        else
        important = important & "; " & objEntry.Title
        End If
        numImp = numImp + 1
  Else
        If numOpt = 0 Then
        opti = objEntry.Title
        Else
        opti = opti & "; " & objEntry.Title
        End If
        numOpt = numOpt + 1
  End If
Next

'WScript.Echo "<<>>"
'WScript.Echo reboot & " " & numImp & " " & numOpt
'WScript.Echo important
'WScript.Echo opti
'WScript.Quit()

objFile.WriteLine(reboot & " " & numImp & " " & numOpt)
objFile.WriteLine(important)
objFile.WriteLine(opti)
objFile.Close

WScript.Quit()


Im Plugin-Ordner des Agents liegt dann die Batch windows_updates_from_log.bat, die der Agent bei Check ausfügrt uns so den Patchstand aus der Logfile ausgibt.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
 OFF

REM --------------------------------------------------------------------------------------------------
REM windows_updates_from_log.bat - check_mk agent plugin to monitor pending windows updates inderectly
REM
REM To use this just place it in the plugins/ directory below the path of the
REM check_mk_agent. After that an inventory run on the Nagios host should lead
REM to a new inventorized service.
REM
REM Author: Patrick Schlüter <>, 2011-08-21
REM --------------------------------------------------------------------------------------------------

TYPE "..\tasks\windows_updates-log.txt"


Was haltet Ihr davon?

Grüße,

Patrick

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

9

22.08.2011, 13:18



Das sieht schon super aus, was du da gemacht hast, hat aber einen Schönheitsfehler. Der Aufwand das Plugin zu installieren ist relativ hoch und bei vielen Servern kein vergnügen.

Zitat


Was wäre, wenn man folgendes machen würde:
Dein windows_updates2log.vbs Script wieder in check_mk/plugins platzieren (die BAT entfällt). Ganz am Anfang des Scripts eine if-Abfrage einbauen, die Prüft, ob es eine windows_updates-log.txt gibt, die nicht älter als X Stunden ist.

Ist sie älter, wird ein letztes mal der Inhalt der Logdatei an check_mk übergeben und sofort danach eine neue Datei (im Hintergrund um, den Agent nicht zu bremsen) generiert.

Ist sie jünger, wird der Inhalt der TXT-Datei an den Agent übergeben und der Rest des Scripts übersprunken.

Das hätte den Vorteil, dass das Plugin leichter verteilt werden könnte und der Aufwand gering gehalten wird.
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

10

23.08.2011, 13:43

Hey serial,

Dein Vorschläg ist super.

Ich hab das ganze Konstrukt jetzt nochmal leicht umgeändert:

Ins Plugin-Verzeichnis des Agents kommt jetzt die Datei "windows_updatesViaLogCheck.vbs". In der wird abgefragt, od die Log-Datei mit der Ausgabe des ursrpünglichen windows_updates-checks existiert und nicht älter als eine definierbare Zeit ist (ich habe mal eien Tag vorgegeben), falls doch, wird das Skript "windows_updates2log.vbs" im neuen Unterordenr "windows_update" des Agents ausgeführt, das macht die "alte" Abfrage im Hintergrund und schreibt das Ergebnis in die Log-Datei. So dass beim nächsten Check durch Nagios auf den Inhalt der Log-Datei zugegriffen werden kann und diese nicht älter al einen Tag ist.

Was haltet Ihr davon?

windows_updatesViaLogCheck.vbs

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
' -----------------------------------------------------------------------------------------
' windows_updates.vbs - check_mk agent plugin to monitor pending windows updates indirectly
'
' To use this just place it in the plugins/ directory below the path of the
' check_mk_agent. After that an inventory run on the Nagios host should lead
' to a new inventorized service.
'
' Author: Lars Michelsen <>, 2011-03-21
' Editor: Patrick Schlüter <>, 2011-08-21
' -----------------------------------------------------------------------------------------

Option Explicit

Dim result, reboot, numImp, numOpt, important, opti
Dim updtSearcher, colDownloads, objEntry

Dim objFSO, objFile 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Dim lastModificationDate

Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")

Dim ts, TextLine

If objFSO.FileExists(WSHShell.CurrentDirectory & "\windows-update\windows_updates-log.txt") Then
        'MSGBox("Datei windows_updates-log.txt existiert!")
        lastModificationDate = objFSO.GetFile(WSHShell.CurrentDirectory & "\windows-update\windows_updates-log.txt").DateLastModified
        if DateDiff("n", lastModificationDate, now) > (60*24) Then '60 Minuten mal 24 Stunden
                Set ts = objFSO.GetFile(WSHShell.CurrentDirectory & "\windows-update\windows_updates-log.txt").OpenAsTextStream(1, -2)
                Do While ts.AtEndOfStream <> True
                                WScript.Echo ts.ReadLine
                Loop
                ts.Close
                WSHShell.Run("wscript " & WSHShell.CurrentDirectory & "\windows-update\windows_updates2log.vbs")
        Else
                Set ts = objFSO.GetFile(WSHShell.CurrentDirectory & "\windows-update\windows_updates-log.txt").OpenAsTextStream(1, -2)
                Do While ts.AtEndOfStream <> True
                                WScript.Echo ts.ReadLine
                Loop
                ts.Close
        end If
                Else
                WSHShell.Run("wscript " & WSHShell.CurrentDirectory & "\windows-update\windows_updates2log.vbs")
End If

WScript.Quit()


windows_updates2log.vbs

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
' -----------------------------------------------------------------------------------------
' windows_updates.vbs - check_mk agent plugin to monitor pending windows updates indirectly
'
' To use this just place it in the plugins/ directory below the path of the
' check_mk_agent. After that an inventory run on the Nagios host should lead
' to a new inventorized service.
'
' Author: Lars Michelsen <>, 2011-03-21
' Editor: Patrick Schlüter <>, 2011-08-21
' -----------------------------------------------------------------------------------------

Option Explicit

Dim result, reboot, numImp, numOpt, important, opti
Dim updtSearcher, colDownloads, objEntry

Dim objFSO, objFile 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")


        Set objFile = objFSO.CreateTextFile(WSHShell.CurrentDirectory & "/windows-update/windows_updates-log.txt")

        objFile.WriteLine("<<>>")

        If CreateObject("Microsoft.Update.AutoUpdate").DetectNow <> 0 Then
                'WScript.Echo "<<>>"
                WScript.Quit(0)
        End If

        Set updtSearcher = CreateObject("Microsoft.Update.Session").CreateUpdateSearcher

        reboot = 0
        numImp = 0
        numOpt = 0

        If CreateObject("Microsoft.Update.SystemInfo").RebootRequired Then
                reboot = 1
        End If

        Set result = updtSearcher.Search("IsInstalled = 0 and IsHidden = 0")
        Set colDownloads = result.Updates

        For Each objEntry in colDownloads
                if objEntry.AutoSelectOnWebSites Then
                                if numImp = 0 Then
                                        important = objEntry.Title
                                else
                                        important = important & "; " & objEntry.Title
                                End If
                                numImp = numImp + 1
                Else
                                If numOpt = 0 Then
                                        opti = objEntry.Title
                                Else
                                        opti = opti & "; " & objEntry.Title
                                End If
                                numOpt = numOpt + 1
                End If
                Next

        objFile.WriteLine(reboot & " " & numImp & " " & numOpt)
        objFile.WriteLine(important)
        objFile.WriteLine(opti)
        objFile.Close

WScript.Quit()

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

11

23.08.2011, 15:01

Hallo Patrick,

so weit schon mal ne klasse Arbeit von dir. Ich habe aber Probleme das Script zum laufen zu bringen.

Ist diese File-, Ordnerstruktur richtig?

Quellcode

1
2
3
4
5
6
7
8
9
10
.
|-- check_mk.ini
|-- check_mk_agent.exe
|-- crash.exe
|-- local
|   `-- foldercount.bat
`-- plugins
    |-- windows-update
    |   `-- windows_updates2log.vbs
    `-- windows_updatesViaLogCheck.vbs


Wenn ich auf dem Client den Agent von Hand starte (check_mk_agent.exe test) kommt eine Fehlermeldung.

Zitat

Die Skriptdatei c:\programme\check_mk\windows-update\windows_updates2log.vbs wurde nicht gefunden

Da stimmt irgend wie der Pfad nicht. Muss windows_updates2log.vbs nun unter /check_mk/plugins/windows-update oder /check_mk/windows-update liegen?
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

12

23.08.2011, 15:15

Danke.

Die OrdnerStruktur muss so aussehen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
. 
|-- check_mk.ini 
|-- check_mk_agent.exe 
|-- crash.exe 
|-- local 
|   `-- foldercount.bat 

|-- plugins     
| `-- windows_updatesViaLogCheck.vbs

|-- windows-update     
|   `-- windows_updates2log.vbs 


Spich, der "windows-update"-Ordner muss ein eigener Ordner direkt im "HAuptordner" sein.

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

13

24.08.2011, 12:57

Verdammt! Da hat sich der Fehlerteufel eingeschlichen:

Ich habe noch Probleme mit den Pfaden innerhalb der Skripte.

Kann mir jemand sagen, wie ich die Skripte vom Agent aus starten kann, ohne den totalen Pfad zum Skript anzugeben, der kann ja schliesslich variieren?

Grüße,

Patrick

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

14

24.08.2011, 13:42

Zitat von »Patrick_Schlueter«

Kann mir jemand sagen, wie ich die Skripte vom Agent aus starten kann, ohne den totalen Pfad zum Skript anzugeben, der kann ja schliesslich variieren?


Quellcode

1
WSHShell.Run("wscript " & WSHShell.CurrentDirectory & "\windows-update\windows_updates2log.vbs")

Der relative Pfad müsste doch auch gehen. Einfach eine Ebene hoch gehen (cd..).

Quellcode

1
WSHShell.Run("wscript " & WSHShell.CurrentDirectory & "..\windows-update\windows_updates2log.vbs")

Oder liege ich da jetzt total falsch?
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

15

24.08.2011, 13:52

Also wenn ich den Agent vom NAgiosserver aus Abfrage, klappt das mit dem relativen Pfad irgendwie nicht.

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

16

24.08.2011, 16:36

Zitat von »Patrick_Schlueter«

Also wenn ich den Agent vom NAgiosserver aus Abfrage, klappt das mit dem relativen Pfad irgendwie nicht.

Hallo, hilft dir das weiter?

Quellcode

1
2
3
4
5
6
set fs = CreateObject("Scripting.FilesystemObject")

scriptname = Wscript.ScriptFullName
scriptpath = fs.getparentfoldername(scriptname)

msgbox scriptpath
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

ayk

Anfänger

Beiträge: 19

Geschlecht: Männlich

Anzahl Nagios-Server: 1

Nagios-Version(en): OMD 0.48 Nagios 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 2

Anzahl Services: 50

Betriebssystem(e): CentOS 5.5 x86_64

Plugin-Version(en): 1.4.15

NagVis-Version: 1.5.9

NDO-Version: 1

17

25.08.2011, 10:00

Herrlich, der Schnipsel funktioniert :)

serial

Fortgeschrittener

Beiträge: 287

Geburtstag: 18.09.

Geschlecht: Männlich

Beruf: Administrator

Anzahl Nagios-Server: 1

Nagios-Version(en): 3.2.3

Verteiltes Monitoring: Nein

Redundantes Monitoring: Nein

Anzahl-Hosts: 338

Anzahl Services: 5070

Betriebssystem(e): Debian

Plugin-Version(en): 1.4.xx

Sonstige Addon's: OMD 0.46

18

25.08.2011, 10:31

Zitat von »ayk«

Herrlich, der Schnipsel funktioniert :)

Klasse!

Kannst du die fertigen Scripte noch mal posten, bzw. als Datei anhängen? Danke.
check_mk - Ein Nagios Plugin
OMD - Open Monitoring Distribution
Shinken - Ein Nagiosableger in Python

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

19

25.08.2011, 12:08

Danke für Deinen Typ.

Nach ein paar Anpassungen scheicht der Check zu laufen.

Morgen kann ich Dir sagen wie es läuft.

Beiträge: 55

Anzahl Nagios-Server: 10

Nagios-Version(en): 3

Verteiltes Monitoring: Ja

Redundantes Monitoring: Nein

Anzahl-Hosts: 500

Anzahl Services: 1000

Betriebssystem(e): Windows, Linux

Plugin-Version(en): n.a.

NDO-Version: 10

20

25.08.2011, 15:31

Hallo,

so, nach ein paar Anpassungen läuft jetzt alles.

Der Check-MK-Service hat eine normale Laufzeit von etwa 2 Sekunden, nur wenn der Check auf Updates ausgeführt wird, beträgt die Latency 10 Sekunden. aber nur ein mal.

Der Ordner "windows-updates" liegt jetzt direkt im "plugins"-Ordner des Agents.

windows_updatesViaLogCheck.vbs

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
' -----------------------------------------------------------------------------------------
' windows_updates.vbs - check_mk agent plugin to monitor pending windows updates indirectly
'
' To use this just place it in the plugins/ directory below the path of the
' check_mk_agent. After that an inventory run on the Nagios host should lead
' to a new inventorized service.
'
' Author: Lars Michelsen <>, 2011-03-21
' Editor: Patrick Schlüter <>, 2011-08-21
' -----------------------------------------------------------------------------------------

Option Explicit

Dim result, reboot, numImp, numOpt, important, opti
Dim updtSearcher, colDownloads, objEntry

Dim objFSO, objFile 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Dim lastModificationDate

Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")


Dim scriptname, scriptpath

scriptname = Wscript.ScriptFullName
scriptpath = objFSO.getparentfoldername(scriptname)

Dim ts, TextLine

If objFSO.FileExists(scriptpath &"\windows-update\windows_updates-log.txt") Then
        lastModificationDate = objFSO.GetFile(scriptpath &"\windows-update\windows_updates-log.txt").DateLastModified
        if DateDiff("n", lastModificationDate, now) > (60*24) Then '60 Minuten mal 24 Stunden
                Set ts = objFSO.GetFile(scriptpath &"\windows-update\windows_updates-log.txt").OpenAsTextStream(1, -2)
                Do While ts.AtEndOfStream <> True
                                WScript.Echo ts.ReadLine
                Loop
                ts.Close
                WSHShell.Run(scriptpath &"\windows-update\windows_updates2log.vbs")
        Else
                Set ts = objFSO.GetFile(scriptpath &"\windows-update\windows_updates-log.txt").OpenAsTextStream(1, -2)
                Do While ts.AtEndOfStream <> True
                                WScript.Echo ts.ReadLine
                Loop
                ts.Close
        end If
                Else
                WSHShell.Run(scriptpath &"\windows-update\windows_updates2log.vbs")
End If

WScript.Quit()


windows_updates2log.vbs

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
' -----------------------------------------------------------------------------
' windows_updates.vbs - check_mk agent plugin to monitor pending windows updates
'
' To use this just place it in the plugins/ directory below the path of the
' check_mk_agent. After that an inventory run on the Nagios host should lead
' to a new inventorized service.
'
' Author: Lars Michelsen <>, 2011-03-21
' Editor: Patrick Schlüter <>, 2011-08-24
' -----------------------------------------------------------------------------

Option Explicit

Dim result, reboot, numImp, numOpt, important, opti
Dim updtSearcher, colDownloads, objEntry

Dim objFSO, objFile 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Dim scriptname, scriptpath

scriptname = Wscript.ScriptFullName
scriptpath = objFSO.getparentfoldername(scriptname)

Set objFile = objFSO.CreateTextFile(scriptpath &"\windows_updates-log.txt")

If CreateObject("Microsoft.Update.AutoUpdate").DetectNow <> 0 Then
  objFile.WriteLine("<<>>")
  WScript.Quit()
End If

Set updtSearcher = CreateObject("Microsoft.Update.Session").CreateUpdateSearcher

reboot = 0
numImp = 0
numOpt = 0

If CreateObject("Microsoft.Update.SystemInfo").RebootRequired Then
  reboot = 1
End If

Set result = updtSearcher.Search("IsInstalled = 0 and IsHidden = 0")
Set colDownloads = result.Updates

For Each objEntry in colDownloads
  if objEntry.AutoSelectOnWebSites Then
        if numImp = 0 Then
        important = objEntry.Title
        else
        important = important & "; " & objEntry.Title
        End If
        numImp = numImp + 1
  Else
        If numOpt = 0 Then
        opti = objEntry.Title
        Else
        opti = opti & "; " & objEntry.Title
        End If
        numOpt = numOpt + 1
  End If
Next

objFile.WriteLine("<<>>")
objFile.WriteLine(reboot & " " & numImp & " " & numOpt)
objFile.WriteLine(important)
objFile.WriteLine(opti)
objFile.Close
WScript.Quit()


Wenn es jemand testet wäre ich für Rückmeldung sehr dankbar.

Viele Grüße,

Patrick

Ähnliche Themen