Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per VBS die Ereignisanzeige auf ein bestimmtes Event hin überwachen?

Frage Entwicklung VB for Applications

Mitglied: Camelidae

Camelidae (Level 1) - Jetzt verbinden

30.03.2010 um 02:36 Uhr, 7442 Aufrufe, 5 Kommentare

Ist es möglich, die Ereignisanzeige (event log) von WinXP per VBScript zu überwachen, so dass bei der Einwahl eines VNC-Clients ein anderes Skript automatisch gestartet wird?
Beziehungsweise: ist es generell möglich, ein VBScript als Service zu starten, das dann permanent den EventLog auf einen bestimmten Event überwacht?
Wie müsste so etwas denn grob aussehen?
Bis jetzt ist es mir nur gelungen, gezielt durch den Start eines VBScripts die dann schon vorhandenen Logs nach bestimmten Ereignissen zu durchsuchen. Wie ich allerdings ein permanentes Monitoring umsetze ist mir bis jetzt leider nicht klar.
Ich würde mich sehr freuen, wenn jemand mir dabei auf die Sprünge helfen könnte.
Vielen Dank!
Mitglied: TsukiSan
30.03.2010 um 03:06 Uhr
Hallo Camelidea,

ohne dein exisitierendes Script zu kennen, gäbe es Möglichkeiten, ein VBS für eine bestimmte Zeit
am Laufen zu halten.
Du kannst das VBS aus einer Batch-Datei endlos aufrufen
01.
:Start 
02.
call meine.vbs //nologo >>MeineTextDatei.txt 
03.
goto Start
Das gäbe dir im Falle, wenn du in deinem VBS zum Beispiel Meldungen mit WSCRIPt.ECHO
ausgibst, die Daten in eine Textdatei aus.
Oder du baust dir eine Schleife in dein VBS ein und allen restlichen Code
legst du dir in eine Subroutine.
Beispiel:
01.
for i = 1 to 60   
02.
	MeineSub 
03.
	Wscript.Sleep 1000 ' für 1000ms "schlafen" 
04.
next 
05.
 
06.
Sub MeineSub() 
07.
        'Dein ganzer Code 
08.
EndSub
Aber sicher gibt es noch mehrere Möglichkeiten. Das könnte man diskutieren, wenn man dein VBS näher kennen würde.
Dann kann man die eleganteste Variante auswählen.
Eventuell ist ja schon eine von meinen beiden Möglichkeiten die Richtige für dich.

Gruss
Tsuki
Bitte warten ..
Mitglied: Tommy70
30.03.2010 um 06:35 Uhr
Auch Hallo!

Ja, ist möglich. Mittels instsrv.exe und srvany.exe kannst du ein Script als Dienst laufen lassen. Hier unter USBsecure findest du ein Beispiel wo es so gemacht wird.
Allerdings ist für deine Aufgabe wohl eher ein Trigger den du mittels Eventtriggers erstellen kannst die bessere Wahl.
Bitte warten ..
Mitglied: Camelidae
30.03.2010 um 20:40 Uhr
Hallo!

Vielen Dank euch Zweien für die Antworten!

Ich fang mal oben an.


@Tsuki:

Mein Skript durchsucht momentan bei Ausführung sämtliche EventLogs auf Einträge, die bestimmte Paramter aufweisen.
Aus diesen liest er dann eine bestimmte Information (IP-Adresse) aus.

01.
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2") 
02.
 
03.
Set colLoggedEvents = objWMIService.ExecQuery ("Select * from Win32_NTLogEvent Where EventType='3' and SourceName='WinVNC4'") 
04.
 
05.
 
06.
test = 0 
07.
 
08.
For Each objEvent In colLoggedEvents 
09.
  if test < 1 then 
10.
    last_Message = objEvent.Message 
11.
  end if 
12.
  if InStr(lcase(objEvent.Message), "connections") then 
13.
    test3 = split(objEvent.Message) 
14.
    test4 = split(test3(2),"::") 
15.
  end if 
16.
 
17.
Next
Momentan wie gesagt durchsucht er noch alle eventlogs - da werde ich noch eine Zeitabfrage einbauen. Ansonsten kriege ich nämlich immer die älteste IP geliefert und ich will ja eigentlich die neueste bzw aktuelle.
(Danach folgen noch ein paar Kleinigkeiten, die aber hier jetzt nicht von Bedeutung sind. Bei gefundener IP wird dann ein weiteres Skript ausgeführt.)
Deshalb war auch die Frage, ob ein Skript möglich wäre, das immer nur auf aktuelle Änderungen reagiert. Also Richtung Monitoring.

So, jetzt mal unter dem Gesichtspunkt, dass ich das mit 'nur die aktuellen Einträge lesen' hinbekomme (wie auch immer :/ ):

Das mit der Batch-Datei hört sich ganz gut an. Kann ich allerdings diese Dauerschleife abbrechen, wenn ich eine IP gefunden habe? Also kann ich einen Stop-Befehl von VBS zu Batch zurücksenden? Weil ansonsten läuft diese Abfrage ja weiter bis im Prinzip der PC abgeschaltet wird. Und das ist nicht nötig. Sobald eine IP gefunden wurde, brauch ich dieses EventLogs-durchsuchen eigentlich nicht mehr.

Zur anderen Version: Hier werde ich eventuell ein Problem kriegen, weil die Schleife ja nicht dauerhaft läuft sondern nur eine bestimmte Anzahl an Durchläufen macht. Ich kann aber im Voraus nicht bestimmen, wie lange es dauert, bis sich wirklich jemand per VNC einwählt. Wenn ich die Anzahl der Durchläufe hochsetze, ist das halt leider noch keine Garantie, dass das Event innerhalb dieser Durchläufe erfolgt.
Andererseits könnte man hier abfangen, falls sich zu lange niemand einwählt.


@Tommy:

Danke für den Hinweis auf die zwei *.exe. Beim Microsoft Support ist dort WinXP allerdings nicht vermerkt. Trifft das auf XP trotzdem zu, oder verdreh ich da gerade etwas?
Wie meinst du das mit dem Eventtrigger?

Danke nochmal!
Gruss,
Camelidae
Bitte warten ..
Mitglied: TsukiSan
31.03.2010 um 01:00 Uhr
Hallo Camelidea,

Wenn die VBS das erste Mal startet, ließ dir alle vorhanden IPs erst einmal ein (vielleicht in ein array).
danach läßt du dein VBS "im Kreis" laufen mit einer Zeit von 1 oder aller 10 Sekunden oder was
am besten sinnhaft ist. Die Taktzeit kannst du einstellen über den
01.
Wscript.Sleep
in Millisekunden.

Beispiel:
01.
Dim MeineIPs(254) 
02.
Set objWMIService = GetObject("winmgmts:" & "\\" & strComputer & "\root\cimv2") 
03.
 
04.
Set colLoggedEvents = objWMIService.ExecQuery ("Select * from Win32_NTLogEvent Where EventType='3' and SourceName='WinVNC4'") 
05.
 
06.
 
07.
test = 0 
08.
I = 0 
09.
 
10.
For Each objEvent In colLoggedEvents 
11.
  if test < 1 then 
12.
    last_Message = objEvent.Message 
13.
  end if 
14.
  if InStr(lcase(objEvent.Message), "connections") then 
15.
    test3 = split(objEvent.Message) 
16.
    test4 = split(test3(2),"::") 
17.
    MeineIPs(I) = test4(1) 
18.
   I = I+1 
19.
  end if 
20.
 
21.
Next 
22.
 
23.
For I = 1 to 4320 ' 43200s = 12h 
24.
  PruefeIP 
25.
  Wscript.Sleep 10000 'alle 10 Sekunden weiter 
26.
next  
27.
 
28.
Sub PruefeIP() 
29.
 
30.
test = 0 
31.
I = 0 
32.
 
33.
For Each objEvent In colLoggedEvents 
34.
  if test < 1 then 
35.
    last_Message = objEvent.Message 
36.
  end if 
37.
  if InStr(lcase(objEvent.Message), "connections") then 
38.
    test3 = split(objEvent.Message) 
39.
    test4 = split(test3(2),"::") 
40.
     If   MeineIPs(I) = test4(1) then 
41.
        ' nichts machen 
42.
     Else 
43.
        ' weitere Anweisungen 
44.
        MeineIPs(I) = test4(1) 
45.
        I = I+1 
46.
    End If 
47.
  end if 
48.
 
49.
End Sub
Das ist ungetestet! Aber so ähnlich könnte der Aufbau sein. In diesem Beispiel würde der
VBS-Schnipsel über 12 Stunden laufen.
Dann müßte man sich nur noch einen "Sprung nach draußen" bauen, sprich, wie du das Script jeder Zeit beenden kannst.
Der "Affengriff" geht immer und unter den Prozessen stoppst du einfach "wsrcipt.exe"

Hoffe, erst einmal etwas weitergeholfen zu haben.

Gruss
Tsuki
Bitte warten ..
Mitglied: Tommy70
31.03.2010 um 06:26 Uhr
Zitat von Camelidae:
@Tommy:

Danke für den Hinweis auf die zwei *.exe. Beim Microsoft Support ist dort WinXP allerdings nicht vermerkt. Trifft das auf XP
trotzdem zu, oder verdreh ich da gerade etwas?
Wie meinst du das mit dem Eventtrigger?

Danke nochmal!
Gruss,
Camelidae

Hallo,

ja, die 2 Exe funktionieren auch unter XP. Habe das schon mehrfach verwendet.
Eventtriggers ist genau das was du suchst. Du musst dann nicht mehr das Eventlog durchsuchen. Mit Eventtriggers kannst du einen Trigger auf ein vordefiniertes Event setzen.
Tritt dieses Event dann ein, dann wird von Eventtriggers automatisch die vorher definierte Aktion ausgeführt.
Beispiele:
Setzen eines Triggers: eventtriggers /create /eid 7 /tr EventID7 /ru NAME /rp PASSWORT /tk "C:\Temp\Eventtriggers\mail.cmd"
Alle Trigger wieder löschen: eventtriggers /delete /TID *


Hier steht noch etwas mehr. Sonst hilft dir Google auch weiter.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
Printserver Ereignisanzeige - Event ohne Seitenanzahl

Frage von cuilster zum Thema Windows Server ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...