PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell script prob



sm0ker
04-09-2001, 20:01
tag!
also es geht um folgendes:
ich moechte ein script schreiben das per cron die /var/log/messages alle sagen wir mal 2 min auswertet und nach dem string deny sucht. diesen wenn es ihn findet in eine neue datei schreibt. soweit hab ich es auch schon hinbekommen aber nun stellt sich mir folgendes problem, und zwar wenn ich des script zum 2. mal starte dann liest er wieder die ganze messages und des finde ich nicht sivoll. nun habe ich probiert die messages in eine named pipe umzuleiten was soweit auch ganz gut klappte aber wie lasse ich des nun von dem script auswerten? und muss oder besser kann ich diese named pipe in ihrer groesse beschraenken weil ich will das die nur z.b. die letzten 200 eintraege der messages enthaelt!
thx

rup
05-09-2001, 01:09
Hallo smOker,

vieleicht ist es das was Du suchst:

tail -f /var/log/messages |grep deny > DeineDatei

Gruss Rupert

neo2k
05-09-2001, 15:22
hi,
also falls du iptables benutzt, dann kannst du limits für logfiles einstellen, damit er dir nich 100 mal den gleich deniy string ausgibt, sonst explodieren ja deine logs

ich mach mal nur ne vermutung, habs nich probiert, könnte man nich das programm ständig laufen lassen, und zwar an die ausgabe von tail -f dranhängen? weil tail gibt ja immer nur die neueren zeilen aus dann, und das man das irgendwie in dein script piped ..... nur ne idee

sm0ker
05-09-2001, 17:52
hi
thx fuer die antwort. ich nutze ipchains aber des prinzip bleibt ja des gleiche... nun weiss ich nimmer weiter! also du meinst so zusagen nen script schreiben das die ausgabe von tail -f bla abfaengt ja? aber da gibts ja immernoch das problem das er wenn z.b. nen scan stattfindet immer noch alles hintereinander weg schreibt in die neue datei und genau das will ich umgehen. naja egal ich glaube ich werde das lieber mal in perl versuchen.
thx trotzdem

mightymike99
05-09-2001, 19:45
Hi smoker,


>ich denke mal du hast nicht verstanden was
>ich will. der soll des nach ner vorgegebenen
...
>ausserdem soll er wenn des deny kommt die ip
>einmal schreiben und nicht 100

Das stand so nicht in deiner Frage.


zeit wiederholen und mir dann nur noch neuere eintrage in die andere datei schreiben...
genau das macht tail -f

So noch etwas Kreativitaet und deinscript macht aus 100-Deny Zeilen mit der selben IP(oder was auch immer) dein gewuenschtes Logfile.


tail -f /var/log/messages |grep deny | deinscript > DeineDatei

Dann kannst ja noch ein 2. script basteln das ab und zu mal die logfiles auf die XXX aktuellsten Meldungen beschraenkt.


tail -200 DeineDatei >xyz
mv -f xyz DeineDatei



weitere Hilfe:
man bashman sed oder man awk www.linuxfibel.de (http://www.linuxfibel.de)

Gruß
fork

sm0ker
05-09-2001, 23:24
hi
ich denke mal du hast nicht verstanden was ich will. der soll des nach ner vorgegebenen zeit wiederholen und mir dann nur noch neuere eintrage in die andere datei schreiben... ausserdem soll er wenn des deny kommt die ip einmal schreiben und nich 100 mal z.b. wie wenn man nmapped wird! wenn noch was unklar is enfach mal nachhaken...
thx trotzdem!

sm0ker
06-09-2001, 23:48
danke!!
da hab ich wohl was falsch verstanden! also ich werd des mal testen und mich dann noch mal melden also soweit danke an alle die geantwortet haben.