Beispiel: Log Datenbank auswerten

Moderator: Securepoint

Gesperrt
mmoeller
Beiträge: 37
Registriert: Mo 03.05.2010, 13:35

Beispiel: Log Datenbank auswerten

Beitrag von mmoeller »

Hallo,

hier ein Beispiel wie man mit der Log Datenbank arbeiten kann.
In meinem Fall wird für einen gewählten Zeitraum + der Möglichkeit auf eine IP Adresse zu filtern das Dansguardian Log geladen und in einer gewünschten Form in eine csv Datei gespeichert. Zum Schluss noch eine kleine Spielerei um sich alle Bilder herunterzuladen.

Bei der Datenbank handelt es sich um eine SQLite 3 Datenbank.

Benötigt werden:
sqliteadmin - Wenn man per hand etwas auf der Datenbank operieren will.
sqlite3.exe - Um mit der Batch-Datei auf die Datenbank zugreifen zu können.
Python - für 'extractexport.py'
wget.exe + die dazu bennötigten dll Dateien - zum herunterladen der Bilder/Dateien

Hier die Haupt Batch datei - Lädt aus der Datenbank die Dansguardian Logeinträge:

ExportDansGuardian.bat

Code: Alles auswählen

@ECHO OFF
REM =====================================================================
REM Parameter vordefinieren

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

SET DEF_DBFILE="C:\\Pfad\\Zur\\Log\\datei\\Logging.db"
SET DEF_SEP=;
SET DEF_IP=
SET DEF_DATE-VON=%jahr%-%monat%-%tag%
SET DEF_DATE-BIS=%jahr%-%monat%-%tag%
SET DEF_EXPORT=export.csv

REM =====================================================================
REM Parameter abfragen und setzen

IF NOT "%1"=="" SET DEF_DATE-VON=%1
IF NOT "%2"=="" SET DEF_DATE-BIS=%2
IF NOT "%3"=="" SET DEF_EXPORT=%3
IF NOT "%4"=="" SET DEF_IP=%4
IF NOT "%5"=="" SET DEF_DBFILE=%5

REM =====================================================================
REM Query

SET DEF_QUERY=SELECT message FROM log WHERE message LIKE '%%Dansguardian%%'
IF NOT "%DEF_IP%"=="" SET DEF_QUERY=%DEF_QUERY% AND message LIKE '%%%DEF_IP%%%'
SET DEF_QUERY=%DEF_QUERY% AND DATE(timestamp, 'unixepoch') BETWEEN '%DEF_DATE-VON%' AND '%DEF_DATE-BIS%';


REM =====================================================================
REM Einleitung

ECHO.
ECHO.Export Dansguardian Log aus Securepoint Log Datenbank
ECHO.
ECHO.Parameter:
ECHO.
ECHO. 1: Von-Datum (Format = YYYY-MM-DD / Default = %jahr%-%monat%-%tag%)
ECHO. 2: Bis-Datum (Format = YYYY-MM-DD / Default = %jahr%-%monat%-%tag%)
ECHO. 3: Export Datei (Default = "export.csv")
ECHO. 4: Filtere auf IP Adresse (Default = kein Filter)
ECHO. 5: Pfad zur Datenbankdatei (kann in der Batch-Datei vordefiniert werden)
ECHO.
ECHO.

REM =====================================================================
REM Voraussetzungen prüfen

IF NOT exist %DEF_DBFILE% GOTO NODBFILE
IF NOT exist Sqlite3.exe GOTO NOSQLITEEXE
IF exist %DEF_EXPORT% GOTO EXPORTEXISTS

REM =====================================================================
REM Start

ECHO.Führe Abfrage aus. Bitte haben Sie einen Moment geduld.
Sqlite3.exe -csv -separator '%DEF_SEP%' %DEF_DBFILE% "%DEF_QUERY%" > 1
extractexport.py
move 2 %DEF_EXPORT%
del 1
ECHO.
ECHO. Fertig!
REM =====================================================================
REM Error Handling
GOTO END

:NOSQLITEEXE
ECHO.Die Datei 'Sqlite3.exe' wurde nicht gefunden.
GOTO END

:EXPORTEXISTS
ECHO.Die Datei '%DEF_EXPORT%' existiert bereits. Bitte geben Sie eine andere Datei an.
GOTO END

:NODBFILE
ECHO.FEHLER: Die Datenbankdatei wurde nicht gefunden. Bitte übergeben der Batch Datei den korrekten Pfad oder definieren Sie diesen in der Datei.
GOTO END

:END
PAUSE

Hier das Python script - Wandelt das ursprüngliche Log in ein schöneres Format um in die Datei 'urls.txt' werden die Bild-URLs gespeichert. Diese können dann später mit wget heruntergeladen werden.

extractexport.py

Code: Alles auswählen

logfile = open("1", "r").readlines()
newfile = open("2", "w")
urlfile = open("urls.txt", "w")

newarr=[]
for line in logfile:
 arr = line.split()
 url = '"'+''.join(arr[9:10])+'"'
 newfile.write(';'.join(arr[5:6] + arr [6:7] + arr[8:9])+';'+url+'\\n')
 
 if (".jpg" in url) or (".png" in url) or (".jpeg" in url): 
 urlfile.write(''.join(arr[9:10])+'\\n')

urlfile.close
newfile.close
Folgender Datei lädt die Links in der Datei urls.txt in den Unterordner PICS:

downloadPics.bat

Code: Alles auswählen

wget -N -i urls.txt -PPICS
Viel Spass damit.

Benutzeravatar
Erik
Securepoint
Beiträge: 1481
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Das hat sich ein /sticky verdient.

Vielen Dank :)

Gesperrt