PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tail & sed



05-12-2000, 22:35
hi,

ich habe folgendes problem:

aus der snort.alert sollen daten auf /dev/tty11 geschoben werden dabei sollen
alle [**] und 192.168. herausgelöscht werden

dazu nehme ich folgenden befehl

tail -f /usr/snort/logs/snort.alert|sed -f /usr/snort/filter_snort|/usr/local/sbin/colorlogs.pl >> dev/tty11

in der filter_snort steht folgendes:

s/\[\*\*\]//g
s/192\.168\.//g


die daten werden auch korrekt ausgegeben, aber erst wenn der tail prozess gekillt wird und dann alle auf einen schlag

ich habe das gefühl das sed alle eingaben abfängt das geforderte herausschneidet und nicht weitergibt

wer kann helfen

cu thx

06-12-2000, 16:10
Hi,
ich weiß nicht, ob´s Dir hilft, aber der tail -f zeigt doch die letzten 10 Zeilen an und bleibt stehen. Macht er bei mir auch, wenn ich die Ausgabe umleite.
Warum benutzt Du denn den tail ? Geht less oder cat nicht?
MfG,
Werner

Manfred-B
06-12-2000, 23:23
Hi
In der tat liegt das an sed - der liest solange von stdin bis der kanal geschlossen wird obwohl in den man und infos was anderes steht.
Also wenn du die ganze Zeile in der der string vorkommt entberen willst hilft Dir grep.
falls nicht dieses skirpt:


#!/bin/bash
# Liest stdin und löscht folgende strings im datenstrom
del1='192.168' # hier konfig
del2='\[**\]'

while true
do
read i
i=${i//$del1/}
i=${i//$del2/}
echo $i >/dev/pts/1
done

Einfach anstelle von sed in die Pipe!

wie man sieht hab ich es mit der "heißen Nadel gestrickt"

Grüsse

Der Weg war das Ziel!

07-12-2000, 16:08
Also ich habe folgende Zeile eingefügt...

tail -f /usr/snort/logs/snort.alert|/usr/network/back_filter /usr/snort/filter_snort|/usr/local/sbin/colorlogs.pl >> /dev/tty11&

und in back_filter deinen Code.

Sobald ich aber nun sagt er

/dev/pts/1 : permission denied

sobald ich dann tail kille flutet er mir pts/1 mit dem Befehl permission denied

Was nun?

Manfred-B
07-12-2000, 21:52
Hallo!

tail -f /usr/snort/logs/snort.alert | /usr/network/back_filter &
reicht völlig aus wenn Du das skript anpasst:
anstatt
echo $i >/dev/pts/1
solltest Du
echo $i >/dev/tty11
schreiben
Ich hab es hier mit xterm getestet und der war eben mit /dev/pts/1 verbunden

Achja, falls Du Strings nicht nur löschen sondern ersetzen willst -
ersatz1='ersatzteil'
....
i=${i//$del1/$ersatz1}
Sterne müssen nicht mit Backslash gequotet "\*" werden aber die eckigen Klammern

man bash
denn fertige Arbeit ist teuer http://www.linuxforen.de/ubb/wink.gif
Grüsse