Top-Themen

Aktuelle Themen (A bis Z)

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

Werte aus txt Datei auslesen in jeder Zeile

Frage Entwicklung VB for Applications

Mitglied: BBfreak

BBfreak (Level 1) - Jetzt verbinden

28.08.2012, aktualisiert 21:06 Uhr, 3074 Aufrufe, 7 Kommentare

Hallo zusammen,

ich bin recht unbewandert mit vbs-Scripten.

Ich hab ein Log wo Gruppenänderungen reingeschrieben werden.

Format:
2012-08-27 08:52:37 Ein Mitglied einer sicherheitsaktivierten lokalen Gruppe wurde hinzugefügt. Antragsteller: Sicherheits-ID: S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx Kontoname: USER1 Kontodomäne: DOMAENE Anmelde-ID: 0x9c0xxx2 Mitglied: Sicherheits-ID: S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx Kontoname: CN=OUNAME,OU=UEBEROU,OU=Gruppen,OU=bla,DC=DOMAENE,DC=local Gruppe: Sicherheits-ID: S-1-5-21-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxx Gruppenname: GRUPPENNAME Gruppendomäne: DOMAENE Weitere Informationen: Berechtigungen: - 
Das ist ansich das Log von Windows-Security wenn nen User hinzugefügt oder gelöscht wird.

Darauf brauch ich aber nur vier Werte die ich dann in ne mysql packen möchte.

Datum+Uhrzeit (im Beispiel 2012-08-27)
Kontoname (im Beispiel: USER1)
Kontoname (im Beispiel: CN=OUNAME,OU=UEBEROU,OU=Gruppen,OU=bla,DC=DOMAENE,DC=local)
Gruppenname (im Beispiel: GRUPPENNAME)


Das Log hat je nach der Anzahl von Änderungen mal mehr und mal weniger Einträge.

Die Datum+Uhrzeit Einträge sind immer 19 Zeichen lang. Das sind die ersten 19 Zeichen pro Zeile. Danach kommt aber erstmal der unnötige Text bis zweimal die gleichen Kontoname: Einträge kommen die mich interessieren.

Ist das überhaupt machbar mit nem vbs-Script?

Als Test wollte ich die vier Werte komma(Symicolon)getrennt in ne neue Datei schreiben.

Kann/Mag mir da jemand bei helfen?

Vielen Dank!

Pat

[Edit Biber] Nachgecodetagged [/Edit]
Mitglied: BBfreak
28.08.2012 um 17:33 Uhr
01.
 
02.
 Option Explicit   
03.
 Dim oFSO, sFile, oFile, sText   
04.
 Set oFSO = CreateObject("Scripting.FileSystemObject")   
05.
 sFile = "report.txt" 
06.
 
07.
 If oFSO.FileExists(sFile) Then   
08.
 
09.
  Set oFile = oFSO.OpenTextFile(sFile, 1)   
10.
 
11.
   Do While Not oFile.AtEndOfStream   
12.
 
13.
   sText = oFile.ReadLine   
14.
 
15.
     If Trim(sText) <> "" Then   
16.
 
17.
      WScript.echo(Left(sText,19)) 'Ausgabe Datum 
18.
 
19.
     End If   
20.
 
21.
   Loop   
22.
  oFile.Close   
23.
 
24.
 Else   
25.
  WScript.Echo "ACHTUNG! Datei nicht vorhanden!"   
26.
 End If  
27.
 
So hab ich nun schon das Datum rausbekommen. Nur wie komme ich an die anderen Werte?
Bitte warten ..
Mitglied: bastla
28.08.2012, aktualisiert um 18:27 Uhr
Hallo BBfreak!

Stellt Dein "Format"-Beispiel (BTW: Formatiere das bitte ebenfalls als "Code"!) nur eine einzige Zeile dar, und gibt es in der "report.txt" mehrere solcher Zeilen?

[Edit] Ich nehm's mal an - dann etwa so:
01.
Set oFSO = CreateObject("Scripting.FileSystemObject")   
02.
sInFile = "D:\report.txt" 
03.
sOutFile = "D:\data.csv" 
04.
sDelim = ";" 
05.
 
06.
If Not oFSO.FileExists(sInFile) Then 
07.
    WScript.Echo "ACHTUNG! Datei nicht vorhanden!"   
08.
End If 
09.
 
10.
Lines = Split(oFSO.OpenTextFile(sInFile).ReadAll, vbNewLine) 'alle Zeilen in Array Lines einlesen 
11.
 
12.
Set rE = New RegExp 
13.
For Each Line In Lines 
14.
    sDatum = Left(Line, 19) 
15.
 
16.
    rE.Pattern = "Kontoname: (\S+) Kontodomäne" 
17.
    sKontoname = rE.Execute(Line)(0).SubMatches(0) 
18.
 
19.
    rE.Pattern = "Kontoname: (\S+) Gruppe:" 
20.
    sLDAPPfad = rE.Execute(Line)(0).SubMatches(0) 
21.
 
22.
    rE.Pattern = "Gruppenname: (\S+) Gruppendomäne:" 
23.
    sGruppe = rE.Execute(Line)(0).SubMatches(0) 
24.
 
25.
    LinesOut = LinesOut & vbNewline & sDatum & sDelim & sKontoname &sDelim & sLDAPPfad & sDelim & sGruppe 
26.
Next 
27.
oFSO.CreateTextFile(sOutFile).Write Mid(LinesOut, 3) 'wegen der Zeilenschaltung am Anfang erst ab Char 3 schreiben
Hier solltest Du vielleicht noch vorbeischauen: Microsoft Beefs Up VBScript with Regular Expressions, oder auch da: Reguläre Ausdrücke - und einen hab ich noch: Regular Expressions in VBScript
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: BBfreak
29.08.2012, aktualisiert um 11:47 Uhr
Hallo Bastla,

vielen Dank für deine Hilfe. Auf der Beefs-Up Seite war ich bereits, aber hab bisher nur Expressions gefudnen, die mir den Start der Buchstabenreihe ausgegeben haben. Sprich ich hatte das Ergebniss 64, weil dort "Kontoname" anfing.

Dein Script gibt mir leider ne Error-Meldung:

Zeile: 20
Zeichen: 5
Ungültiger Prozeduraufruf oder ungültiges Argument.
Code: 800A0005

ich habe deine Datei als *.vbs abgespeichert und die Pfade angepasst.
Hast Du ne Idee?


Nachtrag:

2012-08-27 17:08:05 Ein Mitglied einer sicherheitsaktivierten lokalen Gruppe wurde hinzugefügt. Antragsteller: Sicherheits-ID: S-1-5-21-4161370050-3204092196-2192616155-1180 Kontoname: USERANMELDENAMEOHNEFREIZEICHEN Kontodomäne: bla Anmelde-ID: 0xa2340ff Mitglied: Sicherheits-ID: S-1-5-21-4161370050-3204092196-2192616155-1224 Kontoname: CN=VORNAME NACHNAME,OU=bla,OU=bla,DC=denk,DC=bla Gruppe: Sicherheits-ID: S-1-5-21-4161370050-3204092196-2192616155-1546 Gruppenname: GRUPPENNAMEOHNEFREIZEICHEN Gruppendomäne: bla Weitere Informationen: Berechtigungen: -


das Freizeichen bei Vorname Nachname beim zweiten Kontoname ist das Problem.

Kannst du mir noch sagen, wie ich ne if abfrage da mit einbaue? Entweder steht da blabla wurde "hinzugefügt" oder "entfernt". Das würd ich auch gern mitloggen.


Gruß
Pat
Bitte warten ..
Mitglied: bastla
29.08.2012 um 11:41 Uhr
Hallo BBfreak!

Ich habe nur mit der einen oben von Dir geposteten Zeile getestet - das aber erfolgreich (und da die Zeile 17 nicht wirklich anderes macht als die Zeile 20 wäre im Fall des Falles der Fehler eigentlich schon dort zu erwarten) ...

Kannst Du vielleicht Deine Testdaten (als "Code" formatiert) posten?

Grüße
bastla
Bitte warten ..
Mitglied: BBfreak
29.08.2012 um 11:48 Uhr
Hallo Bastla,

ich hab meine Antwort eben nochmal aktualisiert. WEnn ich das Freizeichen zwischen Vor und Nachname wegnehme, klappt die Abfrage wieder. Das Freizeichen ist in der Regal aber immer da, weil man ja Leute in eine Gruppe packt und nicht nur Gruppen (die haben keine Freizeichen bei uns)

Gruß
Pat
Bitte warten ..
Mitglied: bastla
29.08.2012, aktualisiert um 12:30 Uhr
Hallo BBfreak!
WEnn ich das Freizeichen zwischen Vor und Nachname wegnehme, klappt die Abfrage wieder.
Du meinst damit vermutlich ein Leerzeichen - dann musst Du nur die Zeile 19 anpassen, etwa:
rE.Pattern = "Kontoname: \S+.*Kontoname: (.+) Gruppe:"
Für "hinzugefügt" / "entfernt" kannst Du (soferne nur eines davon enthalten sein kann) so vorgehen:
01.
If InStr(Line, "hinzugefügt") >0 Then Aktion = "hinzugefügt" 
02.
If InStr(Line, "entfernt") >0 Then Aktion = "entfernt"
Grüße
bastla
Bitte warten ..
Mitglied: BBfreak
29.08.2012, aktualisiert um 15:37 Uhr
Hallo Bastla,

Das funktioniert 1A!

Hast mich nun angefixed und das erste Buch zum lernen ist bestellt.

Vielen Dank!


Sollte das nochmal wer brauchen, hier mein Endprodukt:


01.
Set oFSO = CreateObject("Scripting.FileSystemObject")   
02.
sInFile = "D:\report.txt" 
03.
sOutFile = "D:\data.csv" 
04.
sDelim = ";" 
05.
 
06.
If Not oFSO.FileExists(sInFile) Then 
07.
    WScript.Echo "ACHTUNG! Datei nicht vorhanden!"   
08.
End If 
09.
 
10.
Lines = Split(oFSO.OpenTextFile(sInFile).ReadAll, vbNewLine) 'alle Zeilen in Array Lines einlesen 
11.
 
12.
Set rE = New RegExp 
13.
For Each Line In Lines 
14.
    sDatum = Left(Line, 19) 
15.
 
16.
     If InStr(Line, "hinzugefügt") >0 Then sAktion = "hinzugefügt"  
17.
     If InStr(Line, "entfernt") >0 Then sAktion = "entfernt" 
18.
 
19.
    rE.Pattern = "Kontoname: (\S+) Kontodomäne" 
20.
    sKontoname = rE.Execute(Line)(0).SubMatches(0) 
21.
 
22.
    rE.Pattern = "Kontoname: \S+.*Kontoname: (.+) Gruppe:"   
23.
    sLDAPPfad = rE.Execute(Line)(0).SubMatches(0) 
24.
 
25.
    rE.Pattern = "Gruppenname: (\S+) Gruppendomäne:" 
26.
    sGruppe = rE.Execute(Line)(0).SubMatches(0) 
27.
 
28.
    LinesOut = LinesOut & vbNewline & sDatum & sDelim & sAktion & sDelim & sKontoname &sDelim & sLDAPPfad & sDelim & sGruppe 
29.
Next 
30.
oFSO.CreateTextFile(sOutFile).Write Mid(LinesOut, 3) 'wegen der Zeilenschaltung am Anfang erst ab Char 3 schreiben
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Bestimmte zeile aus txt datei auslesen und sich aus zeile 100 einen wert anzeigen lassen ?
gelöst Frage von bob777Entwicklung12 Kommentare

Hallo Suche einen Weg sich aus einer .config (txt) datei einen Wert Spielzeit auszulesen und anzuzeigen? Kann das irgendwer ...

PHP
TXT Datei auslesen und bestimmte Zeilen in Variable setzen
gelöst Frage von 126594PHP11 Kommentare

Hallo zusammen, vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht. Ich will aus einer ...

Batch & Shell
Einzelne Zeilen in txt Datei speichern und auslesen
gelöst Frage von noah1400Batch & Shell7 Kommentare

Liebe Forum-Mitglieder Ich habe da so eine Frage: Ich bin gerade dabei ein PW abfrage mit Batch zu machen. ...

Batch & Shell
Wert in einer TXT Datei suchen
Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 4 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 5 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 19 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 23 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte15 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...