borob14
Goto Top

VB + VBS um Email in Txt zu speicher, auszuwerten und Aktion auszulösen. Teil 2

Fortführung zu Thema: VB + VBS um Email in Txt zu speicher, auszuwerten und Aktion auszulösen.

Letzter Stand:
Dim strClientname, fso, regex, strContent, matches
Set fso=CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
regex.IgnoreCase = True
regex.Pattern = "Kryptik"
strContent = fso.OpenTextFile("C:\PFAD\DATEI.txt").ReadAll()
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)"
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strClientname = Trim(matches(0).submatches(0))
msgbox strClientname
End If
End If


Hallo noch mal, habe doch noch ein Anliegen: Ich muss leider ne Sicherung einbauen.
Es ist möglich das 2 oder mehr mal Zeile 9 (Clientlist: SERVER / ) Bedingung in der Textdatei erfüllt wird (sehr selten aber doch möglich)
Dadurch muss die Abfrage eine Abbruchbedingung bekommen, damit nicht der falsche Client bearbeitet wird.
Ich weiß das das mit For Each funktioniert. Allerdings nicht wie im Zusammenhang mit diesen "Regex.pattern" das gemacht wird.

Es reicht halt kein If / Else mehr, da das matches abbricht, sobald es einmal den String gefunden hat.

wenn 1 -> Bedingung A
wenn 0 -> Bedingung B
wenn >1 -> Bedingung C

Ich stehe etwas mit Schleifen auf Kriegsfuß und hoffe mir hilft wer face-smile

Danke

mfg Rob

Content-ID: 249828

Url: https://administrator.de/forum/vb-vbs-um-email-in-txt-zu-speicher-auszuwerten-und-aktion-auszuloesen-teil-2-249828.html

Ausgedruckt am: 24.12.2024 um 03:12 Uhr

colinardo
colinardo 22.09.2014 aktualisiert um 15:16:29 Uhr
Goto Top
Hallo Rob,
du kannst mit REGEX auch mehrere Vorkommen eines Pattern matchen lassen. Dies legst du mit
regex.Global = True
fest. Dann werden alle Vorkommen in das Matches-Array mit aufgenommen, und du kannst mit matches(x) auf den gewünschten Match zugreifen.
Über alle Matches lässt sich dann ebenfalls iterieren:
For Each myMatch In matches
	if myMatch.SubMatches(0) = "?????" then  
            'usw.  
        end if
Next

Oder du passt das Regex so an das nur der gewünschte Part gematcht wird. Hiermit wird z.B. der letzte Eintrag dieser Art genommen:
regex.Pattern = "[\s\S]*Clientlist: SERVER / ([^,\r\n]+)" 
Du musst halt wissen welchen Eintrag du haben willst ...

Grüße Uwe

p.s. für die Arbeit mit Regular Expressions kann ich RegexBuddy wärmstens empfehlen.
Borob14
Borob14 22.09.2014 um 15:18:59 Uhr
Goto Top
und wieder einmal danke dir face-smile
schaue es mir morgen früh gleich an, heute wird's nix mehr. Gleich Feierabend und Stress mit Umzug. Wollt mir schon längst mal die Seite antuen aber komme einfach nicht dazu. face-sad
Borob14
Borob14 23.09.2014 um 17:02:42 Uhr
Goto Top
So ich mach das mal etwas ausführlicher, ich komm damit einfach nicht klar

Zum Log:
Der Log wird fortlaufend von einem Virenscanner gefüllt und alle 5 Minuten per VBS überprüft (und anschließend gelöscht) ob es ein bestimmten Befall gibt. Wenn der Befall auftritt wird der Client ausgelesen und per CMD Befehl wird der Client vom Netz gekappt, damit im Netzwerk keine Daten verseucht werden)

Das kleine Problem was ich nun noch habe, an einem Beispiel:
Es kann vorkommen das innerhalb der 5 Minuten mehrere Clients auffallen.
Client 1 hat eine Bedrohung z. Bsp. Verseuchte Seite wird geblockt
Client 2 hat den gesuchten bösartigen Virus
Client 3 hat wieder "nur" ein HTTP Block

Möglichkeit A) Lese LogFile aus > wenn mehr als ein Client -> Ende / Benachrichtigung per Mail
Möglichkeit B) Er kann den richtigen Client korrekt auslesen. (wäre mir lieber, da es ein Eingreifen unnötig macht und die Variable im Feierabend eingreifen zu müssen, verkleinert


Hier mal eine zufällig Log mit 3 Clients, ich müsste meine Abfrage so ändern das er immer nach dem gleichen Muster fragt.
1. Ist "Clientlist: SERVERNAME / CLIENTNAME" vorhanden? -> Client in Variable speichern
2. Ist "Echtzeit-Dateischutz" vorhanden
3. Ist Schädling Beispiel "Kryptik" oder "Test" vorhanden (ich brauche hier eine einfache Erweiterung auf 2 oder mehr Abfragen)
4. Prüfen ob Ende von Log oder ob es nächsten Eintrag "Clientlist: SERVERNAME / CLIENTNAME" gibt, wenn ja -> 2.


Bsp. Log (3 mal HTTP Block, andere Sachen sind gleich aufgebaut):
[2014-09-23 08:37:00.024] V1 [5421150c1875] [00000e7c] <NOTIFICATION_ACTION_INFO> Clientbedrohung, Message:
Clientlist: SERVERNAME / CLIENTNAME
Primäre Clients mit Warnung zum Schutzstatus
Server: SERVERNAME
Logfile: 16895, SERVERNAME / CLIENTNAME, 2014-09-23 08:26:24 , ZENSUR, E-Mail-Schutz - Outlook, Warnung, E-Mail-Nachricht, Von: MMS An: ZENSUR Betreff MMS = MIME = 04122013JBGOAL.zip, Win32/TrojanDownloader.Wauchos.X Trojaner, gelöscht,


[2014-09-23 10:07:00.068] V1 [54212a242a76] [00001370] <NOTIFICATION_ACTION_INFO> Clientbedrohung, Message:
Clientlist: SERVERNAME / CLIENTNAME
Primäre Clients mit Warnung zum Schutzstatus
Server: SERVERNAME
Logfile: 16899, SERVERNAME / CLIENTNAME, 2014-09-23 10:05:20 , ZENSUR, E-Mail-Schutz - Outlook, Warnung, E-Mail-Nachricht, Von: Info An: ZENSUR Betreff Re: Entstellung von Konten = MIME = order_59.zip, VBA/TrojanDownloader.Agent.AV Trojaner, gelöscht,


[2014-09-23 10:37:00.015] V1 [5421312c30ee] [0000023c] <NOTIFICATION_ACTION_INFO> Clientbedrohung, Message:
Clientlist: SERVERNAME / CLIENTNAME
Primäre Clients mit Warnung zum Schutzstatus
Server: SERVERNAME
Logfile: 16905, Dd1vws01 / CLIENTNAME, 2014-09-23 10:31:25 , ZENSUR, E-Mail-Schutz - Outlook, Warnung, E-Mail-Nachricht, Von: huynhs@thp.uni-koeln.de An: ZENSUR Betreff Re: Der Prozess ist abgeschlossen = MIME = order_10.zip, VBA/TrojanDownloader.Agent.AV Trojaner, gelöscht,


Mein derzeitiger Script (Auszug, Befehle wurden zum größten Teil durch msg derzeit ersetzt um besser testen zu können):

'Definition der Variablen (Regex 1-X und matches1-X sind wichtig für die Bedrohungsarten-Namensfilter)
Dim strClientname, fso, regex, regex2, strContent, matches, matches2, FileName
Set fso=CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
Set regex2 = CreateObject("vbscript.regexp")
regex.global = True
regex2.global = True
FileName = "C:\Virenschutz\Bedrohung.txt"

'Ping Funktion - überprüfung ob Client anpingbar / Aufruf mit "ping"
Function Ping(strHost)
Dim oPing, oRetStatus, bReturn
Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address='" & strHost & "'")

For Each oRetStatus In oPing
If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
bReturn = False
Else
bReturn = True
End If
Set oRetStatus = Nothing
Next
Set oPing = Nothing

Ping = bReturn
End Function


'Falls die Logfile exisitiert, überprüfe Sie ob "Kryptik" vorhanden ist, ansonsten beende Script.
If FSO.FileExists(FileName) Then
msgbox "LogFile da"
regex.IgnoreCase = True
regex.Pattern = "Echtzeit-Dateischutz"
strContent = fso.OpenTextFile("C:\Virenschutz\Bedrohung.txt").ReadAll()
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strContent = fso.OpenTextFile("C:\Virenschutz\Bedrohung.txt").ReadAll()

'entweder Kryptik
regex.IgnoreCase = True
regex.Pattern = "Kryptik"
Set matches = regex.Execute(strContent)

'oder Test als auslöser
regex2.IgnoreCase = True
regex2.Pattern = "Test"
Set matches2 = regex2.Execute(strContent)

'Falls Kryptik vorhanden ist, lese Clientnamen aus und lösche LogFile. Falls nicht lösche LogFile und beende Script.
If matches.Count > 0 OR matches2.Count > 0 Then
'msgbox "LogFile da, Kryptik vorhanden"
regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)"
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strClientname = Trim(matches(0).submatches(0))
Else
'msgbox "LogFile da, Kryptik vorhanden, Client nicht identifizierbar"
'FSO.DeleteFile("C:\Virenschutz\Bedrohung.txt")
WScript.Quit
End If
Else
'FSO.DeleteFile("C:\Virenschutz\Bedrohung.txt")
WScript.Quit
End If
Else
'FSO.DeleteFile("C:\Virenschutz\Bedrohung.txt")
WScript.Quit
End If
'Falls Kryptik+Clientname auslesbar, deaktiviere und beende den DHCP Dienst des Clients.
set WshShell = WScript.CreateObject("WScript.Shell")
msgbox strClientname
If Ping(strClientname) Then
msgbox "Client anpingbar"
Else
msgbox "KRYPTIK Alarm - " & strClientname & " NICHT MEHR ERREICHBAR, Netzwerkkarte konnte nicht deaktiviert werden!"
WScript.Quit
End if
Else
msgbox "LogFile nicht da"
WScript.Quit
End if

'End-Prüfung ob DHCP Deaktivierung und beenden geklappt hat
WScript.Sleep 30000
If Ping(strClientname) Then
msgbox "KRYPTIK Alarm - " & strClientname & " wurde NICHT erfolgreich vom Netzwerk getrennt"
Else
msgbox "KRYPTIK Alarm - " & strClientname & " wurde erfolgreich vom Netzwerk getrennt"
End If

______________________________________________

Ich hatte Heute leider auch nicht viel Zeit dafür, mal schauen ob es morgen besser wird. Solltest du dich fragen warum der ganze Aufwand: Wir hatten dieses Jahr einen Virenangriff der Netzlaufwerke von einem Client aus verschlüsselt hatte ;)
colinardo
colinardo 23.09.2014, aktualisiert am 24.09.2014 um 10:25:53 Uhr
Goto Top
Das ist kein Problem die Blöcke im Log lassen sich mit Regex zerlegen und nur im jeweiligen Block auf eine beliebige Anzahl an Stichworten durchsuchen (mache dir morgen mal ein Beispiel)... aber bevor wir hier weiter machen mal so als Anmerkung:

Die Vorgehensweise ist doch ziemlich Fehleranfällig, erstens wird immer erst nach 5 Minuten geprüft und in dieser Zeit kann der Virus schon eine beträchtliche Anzahl an Files verschlüsselt haben; zweitens hat der Virenscanner den Schädling erkannt und sollte ihn soweit blockieren das kein Schaden entsteht (wenn nicht, solltet ihr über ein anderes Antivirus-Produkt nachdenken!); drittens kommt so etwas normalerweise nur vor wenn auf den Clients mit Updates geschlampt wird und Policies, Rechte und Backups zu lasch umgesetzt sind.; viertens kämst du mit dem
Nachpflegen von Virenvarianten in dein Script nicht rechtzeitig hinterher (die Virenproduzenten sind einfach schneller)

Hier wäre ein grundlegendes Umdenken angesagt, oder ein anderes Antivirenprodukt die Lösung der Wahl. Es gibt nämlich Produkte die solch ein trennen der Verbindung oder verschieben in ein Quarantänenetz beherrschen. Im Zusammenhang mit einem Network Policy Server (NPS) ist das schön umzusetzen, und kann wesentlich schneller auf die Bedrohung reagieren.
Zusammen mit regelmäßigen Schattenkopien und Backups auf den Fileservern, kannst du so etwas gelassen sehen.

Das Gefrickel mit dem Script wäre mir die absolut allerletzte Wahl, das wird dir hier jeder Bestätigen. Erst neulich ist damit ein Kollege so ziemlich auf die Fresse gefallen.

Grüße Uwe

-edit- dieser Code extrahiert die jeweiligen Blöcke und checkt diese nach einer Liste von Keywords. Der Code geht davon aus das zwischen den Blöcken und am Ende mindestens eine Leerzeile vorhanden ist.

Als Hilfe: Der Regex-Match sieht bildlich so aus:

505a7f8acf7d5a18cebbdbfdf3a24725
Dim strClientname, fso, regex, strContent, matches, arrKeywords
'Array-Liste der Keywords  
arrKeywords = Array("TrojanDownloader","Kryptik")  

Const FileName = "C:\Virenschutz\Bedrohung.txt"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set regex = CreateObject("vbscript.regexp")   
regex.IgnoreCase = True
regex.MultiLine = True
regex.Global = True
regex.Pattern = "^\[\d{4}-\d{2}-\d{2}[\s\S]+?Clientlist:.*?/\s?([^\r\n]+)[\s\S]+?^\s+$"  
strContent = fso.OpenTextFile(FileName).ReadAll()
' Regex ausführen  
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
	For Each match In matches
		Dim isKeywordMatch
		isKeywordMatch = False
		'Clientname extrahieren  
		strClientname = Trim(match.Submatches(0))
		'Checke den Inhalt des Blocks auf die Liste der Keywords  
		For i = 0 To UBound(arrKeywords)
			If InStr(1,match,arrKeywords(i),1) Then
				isKeywordMatch = True
				Exit For
			End If
		Next
		If isKeywordMatch Then
			' Wenn eines der Keywords gefunden wurde mache etwas ...  
			MsgBox "Ein Keyword aus der Liste wurde gefunden bei Client: " & strClientname  
		Else
			' Es wurde für diesen Client kein Keyword gefunden, mach was anderes.  
		End If
	Next
End If
Borob14
Borob14 24.09.2014 um 14:17:19 Uhr
Goto Top
Danke für deine Anmerkungen, sehe ich ähnlich aber leider ist kein Virenscanner perfekt.
Zu 90% holt ein Virus andere Tierchen mit auf den Client, was das Anschlagen des Virenscanners erhöht.
Wenn der Client selber krachen geht, ist das halb so schlimm, nur wenn unbemerkt Terabyte von Daten verschlüsselt werden, ist das ein Heiden Aufwand über die Backups das zurückzuholen (wir haben ne gute Bandsicherung + Festplattensicherung) . Ich bin immer offen für Ideen allerdings ist es mit einer nicht IT-Geschäftsführung drüber, nicht so leicht etwas durchzusetzen (gerade in einem > 400 Personen Unternehmen ). Ein Wechsel des Virenscanners kommt derzeit nicht in Frage (Kosten der laufenden Lizenzen) man müsste die Verlängerung abpassen. Bisher macht ESET aber einen guten Job was Virenerkennung angeht.(Für die Zukunft was würdest du empfehlen?) Was du meinst ist natürlich richtig, es ist schade das Eset solche Sachen nicht unterstützt (trennen vom Netz etc.) Betreffs Rechte ist es sehr schwer bei uns, wir haben sehr viele Softwareprodukte die ADM Rechte benötigen, meist wegen schlechter Programmierung, veralteter Varianten oder oder oder. Das zu erklären würde sehr lange dauern Ich bin gerade dabei das etwas umzustellen ist aber über GPOs bei so vielen nicht Standard Software sehr schwer und wir haben wenig PCs die gleich ausgestattet sind.

zwecks Script schau ich mir an sobald ich Luft habe, diese Woche kommt irgendwie keine Ruhe rein immer ist wieder was anderes ^^

Trotzdem Danke erst mal, bin guter Dinge das es klappen wird und keine Sorge, das ist nur eine zusätzliche Sicherheitsmaßnahme. Man könnte Sie auch schnell umlegen um viele Clients zu deaktivieren oder was auch immer face-smile

mfg Rob
Borob14
Borob14 24.09.2014 aktualisiert um 15:19:09 Uhr
Goto Top
Habs mal getestet und klappt leider noch nicht, habe mich mit msgBoxen vorgetastet:
Er führt die Keyword Abfrage nicht durch oder sucht an einer falschen Stelle.

If InStr(1,match,arrKeywords(i),1) Then
isKeywordMatch = True
Exit For
End If

Setze ich ein Keyword "" dann findet er es, setze ich nur ein Zeichen wie "a" oder ähnliches findet er nix.
Die Clients gibt er korrekt bei jeder Schleife zurück. Habe auch mal den Syntax für regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)" genommen um auszuschließen das er die Clients nicht korrekt identifiziert. (es ist nur ein SERVER das bleibt quasi gleich)

Zusätzlich hab ich noch die kleine Frage: Es darf nicht nur nach dem Keyword gesucht werden, ein absolutes muss ist der "Echtzeit-Dateischutz"
da ansonsten alle PCs betroffen sind die mal eine Email oder einen gesperrten Link haben

Wird noch bissel rumprobieren, nur so als Zwichenstand, keine Ahnung wie oft du Zeit hast hier reinzuschauen.

Mit freundlichen Grüßen Rob

P.S. bin Froh das du mir hilfst ich würde sonst Jahre meiner Zeit verballern
DANKE DANKE DANKE


EDIT: " " findet er auch
colinardo
colinardo 24.09.2014 aktualisiert um 15:22:34 Uhr
Goto Top
Da du hier für deinen bsp. Code keine Code-Tags verwendet hast, habe ich das schon halb vermutet. Bei Regular Expressions kommt es auf jedes Zeichen an ! Am besten wäre natürlich eine Original-Datei mit unveränderter Formatierung ...

Es darf nicht nur nach dem Keyword gesucht werden, ein absolutes muss ist der "Echtzeit-Dateischutz"
einfach eine Zusatzabfrage mit Instr() durchführen.
Borob14
Borob14 24.09.2014, aktualisiert am 25.09.2014 um 07:53:25 Uhr
Goto Top
Das verstehe ich jetzt nicht, hat doch vorher mit den IF Abfragen auch funktioniert nur das er jetzt quasi zwischen:
"Clientlist: SERVER / " und "Clientlist: SERVER / "
nach den Keywords suchen soll. Gerade das Beispiel Kryptik hat immer andere Varianten, es darf nur nach diesem Keyword gesucht werden und es muss egal sein ob davor etwas anderes steht, zum Beispiel Blablu0815.Kryptik oder ähnliches, die Schreibweise ändert sich ja leider dauernd und auch die Stelle/Position wo Kryptik steht kann sich ändern. Ist das somit überhaupt suchbar?

P.S. nen Originalen Log kann ich dir nicht geben, da stehen zu viele Firmen internen Sachen drin. "Clientlist: SERVER / " ist aber Original.
colinardo
colinardo 24.09.2014 aktualisiert um 17:07:59 Uhr
Goto Top
Zitat von @Borob14:

Das verstehe ich jetzt nicht, hat doch vorher mit den IF Abfragen auch funktioniert nur das er jetzt quasi zwischen:
"Clientlist: Dd1vws01 / " und "Clientlist: Dd1vws01 / "
nach den Keywords suchen soll. Gerade das Beispiel Kryptik hat immer andere Varianten, es darf nur nach diesem Keyword gesucht
werden und es muss egal sein ob davor etwas anderes steht, zum Beispiel Blablu0815.Kryptik oder ähnliches, die Schreibweise
ändert sich ja leider dauernd und auch die Stelle/Position wo Kryptik steht kann sich ändern. Ist das somit
überhaupt suchbar?
funktioniert hier mit deinem Beispiel-Posting einwandfrei ...
eventuell musst du bei dir das regex so abändern:
regex.Pattern = "^\[\d{4}-\d{2}-\d{2}[\s\S]+?Clientlist:.*?/\s?([^\r\n]+)[\s\S]+?^\s*$" 
die Schreibweise ändert sich ja leider dauernd und auch die Stelle/Position wo Kryptik steht kann sich ändern. Ist das somit überhaupt suchbar?
klar, kein Problem ...

> P.S. nen Originalen Log kann ich dir nicht geben, da stehen zu viele Firmen internen Sachen drin. "Clientlist: Dd1vws01 /
Dann empfehle ich dir dich mal mit dem Regular Expressions Tutorial auseinanderzusetzen.
Borob14
Borob14 24.09.2014, aktualisiert am 25.09.2014 um 07:52:32 Uhr
Goto Top
[2014-09-24 17:27:00.008] V1 [5422e2c43d17] [00000d4c] <NOTIFICATION_ACTION_INFO> AAAAAA-Clientbedrohung, Message: 

Clientlist: SERVER / CLIENT

Primäre Clients mit Warnung zum Schutzstatus

Server: SERVER

Logfile: 16913, SERVER /CLIENT, 2014-09-24 17:20:53 , AAAAA\t02, Echtzeit-Dateischutz, Warnung, Datei, G:\syshost.exe, Variante von Win32/Kryptik.CKVI Trojaner, Gesäubert durch Löschen - in Quarantäne kopiert, Ereignis beim Erstellen einer neuen Datei durch die Anwendung: C:\Program Files\7-Zip\7zG.exe.

Hab mal was mit ner Testmaschine provoziert, hoffe das ist besser (habe nur den Firmennamen geändert, die Buchstaben sind die gleiche Anzahl und auch in groß) . Deine Änderung greift noch nicht ganz, einzelne Buchstaben findet er nun.
Mit den RegEx stimmt natürlich, aber ich packs derzeit einfach nicht mich dort reinzulesen, dafür ist mein Kopf zu sehr mit anderen Sachen abgelenkt.
Ich bin leider so ein Praktiker/Pragmatiker der sich mit Theoretischen "belesen" sehr schwer tut.
colinardo
colinardo 24.09.2014 aktualisiert um 17:42:40 Uhr
Goto Top
Zitat von @Borob14:
Hab mal was mit ner Testmaschine provoziert, hoffe das ist besser (habe nur den Firmennamen geändert, die Buchstaben sind die
jetzt ist alles klar, du hast hier ja Leerzeilen zwischen den einzelnen Zeilen und nicht nur zischen den Blöcken !!! So kann der Pattern natürlich nicht richtig arbeiten, da er ja eine leere Zeile quasi als Trenner benutzt ...
melde mich später oder morgen nochmal.

p.s. sind die Logs die du verarbeitest immer nur von einem Rechner oder sammelst du die von allen in einem Logfile ??

Schönen Abend
Grüße Uwe
Borob14
Borob14 24.09.2014 um 17:49:02 Uhr
Goto Top
Hm blödes Notepad hat mir die Leerzeilen auch nie angezeigt, ist mir selber nie aufgefallen, im Notepad++ sieht mans aber auch. Sorry!

schönen Abend ebenfalls
mfg Rob
colinardo
Lösung colinardo 24.09.2014, aktualisiert am 25.09.2014 um 07:47:28 Uhr
Goto Top
hatte doch noch gerade einen Moment. das hier läuft mit deinem aktualisierten Schnippsel:
(ergänzt: Prüfung ob im jeweiligen Block der String Echtzeit-Dateischutz vorkommt, und prüft nur dann die Keywords)
Dim strClientname, fso, regex, strContent, matches, arrKeywords, strLogInfo
'Array-Liste der Keywords  
arrKeywords = Array("TrojanDownloader","Kryptik")  

Const Filename = "C:\Virenschutz\Bedrohung.txt"   

Set fso = CreateObject("Scripting.FileSystemObject")  
Set regex = CreateObject("vbscript.regexp")   
regex.IgnoreCase = True
regex.MultiLine = True
regex.Global = True
regex.Pattern = "^\[\d{4}-\d{2}-\d{2}[\s\S]+?Clientlist:.*?/\s?([^\r\n]+)[\s\S]*?^Logfile:(.*)"  
strContent = fso.OpenTextFile(Filename).ReadAll()
' Regex ausführen  
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
	For Each match In matches
		Dim isKeywordMatch
		isKeywordMatch = False
		'Clientname extrahieren  
		strClientname = Trim(match.Submatches(0))
		'Part in dem gesucht wird  
		strLogInfo = match.Submatches(1)
		'checke ob der String Echtzeit-Dateischutz im Block vorkommt  
		If InStr(1,strLogInfo,"Echtzeit-Dateischutz",1) Then			  
			'Checke den Inhalt des Blocks auf die Liste der Keywords  
			For i = 0 To UBound(arrKeywords)
				If InStr(1,strLogInfo,arrKeywords(i),1) Then
					isKeywordMatch = True
					Exit For
				End If
			Next
		End If
		If isKeywordMatch Then
			' Wenn eines der Keywords gefunden wurde mache etwas ...  
			MsgBox "Ein Keyword aus der Liste wurde gefunden bei Client: " & strClientname  
		Else
			' Es wurde für diesen Client kein Keyword gefunden, mach was anderes.  
		End If
	Next
End If

-edit- nochmal abgeändert das nur hinter Logfile: gesucht wird.
Borob14
Borob14 24.09.2014 um 17:59:30 Uhr
Goto Top
Bist ein Hero: hab jetzt keine Zeit mehr zum testen aber mach ich morgen Früh gleich.

DANKE!
Borob14
Borob14 25.09.2014 um 07:46:59 Uhr
Goto Top
Guten Morgen, klappt eins a! Ich muss nur noch ne Abbruch Bedingung reinbauen, wenn die Log nicht da ist. DANKE DANKE DANKE bist echt meine Rettung! Damit hab ich in der Hinsicht erst mal Ruhe face-smile

Eventuell kannst du mir ja auch noch mit nem VPN Problem helfen ^^
CMD Befehl SC.exe per VPN nicht möglich, RPC-Server nicht verfügbar
Hab ich mittlerweile aufgegeben, scheint in der jetzigen Konstellation nicht zu gehen.

Ansonsten einen wunderschönen Tag noch.

mfg Rob