Perl-Alternative zu SED Streams Editor
Suche Perl-Script welches gleiche Funktion wie SED-Befehl hat
Servus alle zusammen,
ich bin gerade dabei Logs von unserem Proxy auszuwerten. Da ich die Daten aber weitergebe, muss ich diese vorher anonymisieren, sprich der Benutzer "kb300" wird zu "User1", "kb301" zu "User2" etc.. Habe es mit einem Batch via SED-Befehl probiert. Bei zwei User ändern rödelt die Maschine nur lange aber spuckt dann au Ergebnis aus. Ab drei Usern kommt dann Fehler "Couldn´t allocate memory". Wohl etwas zu intensiv fürs Maschinchen. Jetz war meine Idee das Ganze über ein Perl-Script laufen zu lassen, habe aber noch nie wirklich mit Perl gearbeitet. Hat jemand vielleicht zufälligerweise ein solches Script oder auch nur ne kleine Idee die mir weiterhelfen könnte?
Danke und Gruß
P.S.: Das Programm Anonlog habe ich schon probiert, jedoch kann es nix mit meinen Logs anfangen.
Servus alle zusammen,
ich bin gerade dabei Logs von unserem Proxy auszuwerten. Da ich die Daten aber weitergebe, muss ich diese vorher anonymisieren, sprich der Benutzer "kb300" wird zu "User1", "kb301" zu "User2" etc.. Habe es mit einem Batch via SED-Befehl probiert. Bei zwei User ändern rödelt die Maschine nur lange aber spuckt dann au Ergebnis aus. Ab drei Usern kommt dann Fehler "Couldn´t allocate memory". Wohl etwas zu intensiv fürs Maschinchen. Jetz war meine Idee das Ganze über ein Perl-Script laufen zu lassen, habe aber noch nie wirklich mit Perl gearbeitet. Hat jemand vielleicht zufälligerweise ein solches Script oder auch nur ne kleine Idee die mir weiterhelfen könnte?
Danke und Gruß
P.S.: Das Programm Anonlog habe ich schon probiert, jedoch kann es nix mit meinen Logs anfangen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 56455
Url: https://administrator.de/contentid/56455
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
19 Kommentare
Neuester Kommentar
hi,
kanst mal paar informationen rausrücken, wieviele user (kb300-kb90000??) und ob du einfach nur etwas zum anonymisieren brauchst oder ob das noch andere dinge erfüllen soll??
mfg
kanst mal paar informationen rausrücken, wieviele user (kb300-kb90000??) und ob du einfach nur etwas zum anonymisieren brauchst oder ob das noch andere dinge erfüllen soll??
mfg
Servus,
Userzahlen sind bei 370 in etwa. Also eine
Logfile von einem Tag hat ca. 12MB. Es soll
lediglich anonymisieren. Mehr net.
Userzahlen sind bei 370 in etwa. Also eine
Logfile von einem Tag hat ca. 12MB. Es soll
lediglich anonymisieren. Mehr net.
ok und sind die nutzer kenunngen immer kbxxx oder kann da auch mal heinz oder klaus stehen??
mfg
hallo,
hab mal was geschrieben, müsste funktionieren:
das liest als erstes das logfile ein, geht es dann zeile für zeile durch und schaut ob das kbxxxxx drinne is, schreibt sich das raus und in ein assoziatives feld, vergibt danach den namen userx und macht das halt für das ganze logfile und schreibt das neue logfile am ende zurück.
jow kommisch erklärt, aber is so
wenn fragen sind melden...
mfg
hab mal was geschrieben, müsste funktionieren:
#!/usr/bin/perl
use strict;
use warnings;
my %user;
my $logfile = "log.txt";
my $increment = 1;
my @logfile;
open(LOGFILE,"<$logfile") || die "$!";
@logfile = <LOGFILE>;
close(LOGFILE);
chomp(@logfile);
foreach(@logfile) {
if($_ =~ m/(kb37\d{1,3})/ig) {
my $cache = $1;
unless(exists($user{$cache})) {
$user{$cache} = "user$increment";
$increment++;
}
$_ =~ s/$cache/$user{$cache}/gi;
}
}
open(LOGFILE,">$logfile") || die "$!";
print LOGFILE join("\n", @logfile);
close(LOGFILE);
exit(0);
das liest als erstes das logfile ein, geht es dann zeile für zeile durch und schaut ob das kbxxxxx drinne is, schreibt sich das raus und in ein assoziatives feld, vergibt danach den namen userx und macht das halt für das ganze logfile und schreibt das neue logfile am ende zurück.
jow kommisch erklärt, aber is so
wenn fragen sind melden...
mfg
so guten Morgähn,
hab jetz dein script mal probiert. Er findet
meine Logfile und tüddelt auch, aber er
schreibt leider die log.txt nicht
zurück. Die ursprüngliche Log
bleibt auch unverändert.
hab jetz dein script mal probiert. Er findet
meine Logfile und tüddelt auch, aber er
schreibt leider die log.txt nicht
zurück. Die ursprüngliche Log
bleibt auch unverändert.
hmm was is mit lese schreib rechten??
kommt da gar keine fehlermeldung??
läuft das script bis zum ende durch??
mfg
Oh Herr lass Hirn vom Himmel regnen. Ich Depp
hatte nen Schreibfehler drin. Die Sache
klappt einwandfrei!!!!
Ganz großes Dankeschön. Echt
spitze...
hatte nen Schreibfehler drin. Die Sache
klappt einwandfrei!!!!
Ganz großes Dankeschön. Echt
spitze...
na is doch toll wenn ich helfen konnte...
kontonummer schick ich per pn
Schöne Woche wünsche ich dir!
hmm...
hab ich was verpasst oder is heut ni monatg
mfg
huhu,
pass uff ich kugg heut abend mal wenn ich zeit hab.
dann mach das mit dem access.log glei mit...
mfg
pass uff ich kugg heut abend mal wenn ich zeit hab.
dann mach das mit dem access.log glei mit...
mfg
spitze! Dankeeee!!!!
Geb mir mal paar Ideen wie ich mich
revanchieren könnte
Geb mir mal paar Ideen wie ich mich
revanchieren könnte
Wuahahhaha also:
- Audi A6 3.0 TDI Quattro S-Line (schwarz) oder
- Suzuki GSX 600 R (Matt-Schwarz)
- Nixon "The Ceramic Player" oder
- Es Koston 3 schwarz-rot oder
- und und und
hoffe das warn genug ideen für den anfang
hi,
sach ma was mir grad auffällt...
wenn du ne feste zuweisung von zb kb37228 ==> user1 usw machst, isses eigentlich nich mehr annonymisiert
is ja im endeffekt dann nur ein alias...
so setzt mich jetzt ma an die anderen sachen...
mfg
sach ma was mir grad auffällt...
wenn du ne feste zuweisung von zb kb37228 ==> user1 usw machst, isses eigentlich nich mehr annonymisiert
is ja im endeffekt dann nur ein alias...
so setzt mich jetzt ma an die anderen sachen...
mfg
sooo...
is das drinne was de wolltest:
is hoffe ich selbsterklärend ;-D
wenn fragen sind...
mfg
is das drinne was de wolltest:
#!/usr/bin/perl
use strict;
use warnings;
my %user = ( "kb37133" => "user1",
"kb37144" => "user2", );
# und immer so weiter ...
# musste halt so für alle eintragen
# hier liegen die logfiles in dem dir...
my $logdir = "/home/mydir/logs";
my $increment = 1;
my @logfile;
opendir(LOGDIR,"$logdir") || die "$!";
foreach(readdir(LOGDIR)) {
if($_ =~ m/access.log/gi) {
open(LOGFILE,"<$logdir/$_") || die "$!";
@logfile = <LOGFILE>;
close(LOGFILE);
chomp(@logfile);
foreach my $logf (@logfile) {
if($logf =~ m/(kb37\d{1,3})/ig) {
my $cache = $1;
$logf =~ s/$cache/$user{$cache}/gi if exists $user{$cache};
}
}
open(LOGFILE,">$logdir/$_") || die "$!";
print LOGFILE join("\n", @logfile);
close(LOGFILE);
}
}
closedir(LOGDIR);
exit(0);
is hoffe ich selbsterklärend ;-D
wenn fragen sind...
mfg