PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einträge aus logdatei löschen



halla
28.01.03, 07:26
hallo alle zusammen,

ich habe mal eine kleine frage:

aus einem apache-log würde ich gern eine bestimmte ip-adresse regelmäßig löschen.
mit einem

>grep '192.168.0.25' transfer_log >> /files/my_hits

kann ich zwar schon mal diese hits trennen, aber nicht aus dem transfer_log löschen?

wie stelle ich das an?
das die 192.168.0.25 zwar quasi in eine neue datei geschrieben wird,
aber die einträge im transfer_log auch gleichzeitig rausgelöscht werden?

vielen dank für euere hilfe,
grüße,
daniel

joey.brunner
28.01.03, 10:02
hier ein vorschlag,

schreib dir ein shellskript, das die grep ausgabe in eine variable schreibt, z.b.

hinfortmitdir = `grep 192.168.0.25 transfer_log`

dann machst du einen sed, wo du das ergebnis davon durch nichts ersetzt...

sed s/$hinfortmitdir//g datei > datei

kann das jetzt gerade leider nicht testen, sollte aber gehen, aonsosten musst du noch etwas mit den escapes spielen

joey

dmfanman
28.01.03, 10:47
Das ist so ein Grund, warum ich auf Linux umgestiegen bin ;-).

Jasper
28.01.03, 12:41
Original geschrieben von halla

aus einem apache-log würde ich gern eine bestimmte ip-adresse regelmäßig löschen.
mit einem

>grep '192.168.0.25' transfer_log >> /files/my_hits

kann ich zwar schon mal diese hits trennen, aber nicht aus dem transfer_log löschen?

wie stelle ich das an?
das die 192.168.0.25 zwar quasi in eine neue datei geschrieben wird,
aber die einträge im transfer_log auch gleichzeitig rausgelöscht werden?


grep -v '192\.168\.0\.25' transfer_log > transfer_log_ohne_ip

oder

sed '/192\.168\.0\.25/d' transfer_log > transfer_log_ohne_ip

-j

halla
28.01.03, 14:14
daaaanke !!
hat geklappt !

halla
28.01.03, 17:07
ha, denkste...
so ganz klappt es leider doch nicht.

ich kann sed in eine neue datei schreiben lassen,
d.h. z.B.
sed '/localhost/d' test > datei_neu
klappt ohne probleme.

in datei_neu steht danach nix mehr von localhost, alles gut.

sobald ich aber in dieselbe datei schreiben will ->
sed '/localhost/d' test

...tut sich leider gar nichts, krieg keine fehlermeldung, aber localhost steht dann immer noch in den logs...??

vielen dank für eure hilfe !!

grüße,
daniel

Jasper
28.01.03, 17:35
Original geschrieben von halla
ha, denkste...
so ganz klappt es leider doch nicht.

ich kann sed in eine neue datei schreiben lassen,
d.h. z.B.
sed '/localhost/d' test > datei_neu
klappt ohne probleme.

in datei_neu steht danach nix mehr von localhost, alles gut.

sobald ich aber in dieselbe datei schreiben will ->
sed '/localhost/d' test

...tut sich leider gar nichts, krieg keine fehlermeldung, aber localhost steht dann immer noch in den logs...??


du musst erst ein neues logfile anlegen und danach das alte mit dem neuen überschreiben:

sed '/localhost/d' test > datei_neu && mv datei_neu test

damit wird dann test überschrieben und enthält keine zeilen mehr, die localhost enthalten.

-j

DustPuppy
28.01.03, 17:37
bischien kompliziert...
cp log 1
sed '/localhost/d' 1>log

Jasper
28.01.03, 18:03
Original geschrieben von Linuxschrotter
bischien kompliziert...
cp log 1
sed '/localhost/d' 1>log

würde ich nicht machen. was passiert wenn bei dem cp etwas schiefgeht, bspw. kein platz mehr vorhanden?

-j

DustPuppy
28.01.03, 18:15
na gut

cp log 1 && \
sed '/localhost/d' 1>log

Jasper
28.01.03, 18:23
Original geschrieben von Linuxschrotter
na gut

cp log 1 && \
sed '/localhost/d' 1>log

cp ist langsamer als mv. wo ist denn der vorteil gegenüber:

sed '/localhost/d' test > datei_neu && mv datei_neu test

?

-j