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

Script zur Logauswertung

Frage Entwicklung

Mitglied: der.Fred

der.Fred (Level 1) - Jetzt verbinden

16.07.2010 um 13:35 Uhr, 2163 Aufrufe, 3 Kommentare

Hallo, liebe Profi-Scripter
Ich muß eine Logdatei auswerten und schaffe es einfach nicht, die benötigte Auswertung zu erstellen, obwohl eigentlich alle Infos vorhanden sind. Hoffentlich kann mir jemand helfen...

Das Ganze sollte unter Linux als Script laufen - entweder Bash, AWK oder Perl. Ich versuche mich jetzt schon den zweiten Tag daran - erfolglos!
Besten Dank schon mal immer im Voraus!
Gruß
Fred

Folgendes Problem:
ich habe eine Datei, welche in etwa die folgende Struktur hat:

01.
XXX uninteressante Zeile 
02.
XXX connected to IP xxx.xxx.xxx.xxx 
03.
XXX uninteressante Zeile 
04.
XXX RCPT TO  Empfaenger@adresse.de 
05.
XXX uninteressante Zeile 
06.
XXX uninteressante Zeile 
07.
XXX MAIL FROM  Empfaenger@adresse.de 
08.
XXX uninteressante Zeile 
09.
XXX uninteressante Zeile 
10.
XXX RCPT TO  Empfaenger@adresse.de 
11.
XXX uninteressante Zeile 
12.
XXX MAIL FROM  Empfaenger@adresse.de 
13.
XXX uninteressante Zeile 
14.
XXX Mail rejected: reason 
15.
XXX uninteressante Zeile 
16.
XXX RCPT TO  Empfaenger@adresse.de 
17.
XXX uninteressante Zeile 
18.
XXX MAIL FROM  Empfaenger@adresse.de 
19.
XXX RCPT TO  Empfaenger@adresse.de 
20.
XXX uninteressante Zeile 
21.
XXX MAIL FROM  Empfaenger@adresse.de 
22.
XXX Mail rejected: reason 
23.
XXX connected to IP xxx.xxx.xxx.xxx 
24.
XXX uninteressante Zeile 
25.
XXX RCPT TO  Empfaenger@adresse.de 
26.
XXX MAIL FROM  Empfaenger@adresse.de 
27.
XXX Mail rejected: reason
Die Datei ist zeitchronologisch aufgebaut. Wenn beispielsweise kein Eintrag "rejected" kommt, bedeuted das, dass die Mail, deren Parameter darüber stehen, zugestellt wurde.
Wenn keine IP Adresse steht, gilt die letzte gelesene, da keine neue Verbindung aufgebaut wurde. Ich möchte jetzt alle Mails, welche abgewiesen wurden in einer Tabelle.
Also in der folgenden Form etwa, wobei in diesem Fall hier die Tabelle nur 3 Einträge mit 2 unterschiedl. IPs hätte.

01.
IP-Adresse      To      From    Reason 
02.
--------------------------------------
Mitglied: LotPings
16.07.2010 um 23:09 Uhr
Hallo Fred,

ohne das genaue Format des Zeitstempels wird man dir kaum helfen können,
XXX ist nicht sehr hilfreich.

Eine Reduzierung auf relevante Zeilen könntest du schon einmal hiermit erreichen:
grep '\(connected to IP\)\|\(RCPT.TO\)\|\(MAIL FROM\)\|\(Mail rejected:\)' <test.log
Gruß
LotPings
Bitte warten ..
Mitglied: der.Fred
18.07.2010 um 22:27 Uhr
Hallo LotPings,

ich hab mich vielleicht ein bissel dumm ausgedrückt. Eine Zeile im Log sieht in Wirklichkeit natürlich wesentlich komplizierter aus. Den gewünschten Inhalt aus der relevanten Zeile zu extrahieren, krieg ich bestimmt auf die Reihe. Mein Problem ist vielmehr, eine Routine zu schreiben, welche überhaupt erstmal alle die zu einem für mich relevanten Datensatz (als nur die "rejected" Mails mit Absender, IP vom MTA, Empfänger, Grund) zusammengehörigen Zeilen ermittelt.

Also ungefähr so:
1.) das Log nach dem ersten Eintrag "connected to IP" suchen.
2.) diese Zeile merken
3.) die nächste Zeile, die ein RCPT TO enthält, merken
4.) die nächste Zeile, die ein MAIL FROM enthält, merken
5.) wenn jetzt als nächstes die Zeile "Mail rejected" enthält, hab ich den kompletten Datensatz, ansonsten die Zeilen RCPT TO und MAIL FROM wieder vergessen
6.) gucken, ob als nächstes ein connected to IP kommt, wenn ja, die erste Zeile (also 1.) auch vergessen, wenn nicht, beginnt eine neue Mail an den selbern MTA, also wenn es eine Zeile mit RCPT TO ist, merken...

...und so weiter...

Ich weiss, es ist nicht so einfach zu verstehen, aber vielleicht ist es jetzt etwas besser verständlich? Der Zeitstempel selbst, hat für mich keine Bedeutung. Den kann man auch leider nicht sinnvoll nutzen, um zusammengehörige Einträge zu identifizieren, da pro Sekunde hin und wieder mehrere Mails versendet werden. Das "XXX" steht auch nicht nur für den Zeitstempel, denn da steht auch noch der Prozess und die PID neben der Zeit mit drin.
Bitte warten ..
Mitglied: LotPings
19.07.2010 um 08:15 Uhr
Hallo Fred,

ich habe dich auch schon Anfangs verstanden.
Um aber geeignete RegExp zu entwickeln ist schon der genaue Aufbau der Zeilen notwendig, nicht eine idealisierte Version.
Wenn da vertrauliche Informationen drin sind, neutralisiere sie eben.
Besteht der reason bei rejected aus mehreren Worten?

Im Prinizp würde ich die Adressen aus den gefundenen Zeilen in eine Variable setzen und erst mit der rejected Zeile ausgeben.

Funktioniert der grep-Befehl von oben denn?

Gruß
LotPings

PS: Vom Scripten verstehe ich einiges, bei der bash (einschl. sed, awk) bin ich aber noch Anfänger
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...