PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash-Ausgabeumleitung Befehl1 | grep -e "blah" > Datei



Gradient
31.08.04, 18:34
Der folgende Befehl funktioniert komischerweise nicht:
# /usr/sbin/tcpdump -n -A -i eth0 | grep -e ".*[UP][SA][ES][RS].*" > log.txt
(Ohne die Ausgabeumleitung nach log.txt funktioniert es.)

Wenn ich eine Testdatei mit Zeilen, in denen Zeilen mit USER und PASS stehen per cat an das grep weitergebe, dann funktioniert es:
# cat Testdatei | grep -e ".*[UP][SA][ES][RS].*" > log.txt

Bin ich blöd oder was?

Liberace
31.08.04, 19:24
/usr/sbin/tcpdump -l -n -A -i eth0 | grep --line-buffered -e ".*[UP][SA][ES][RS].*" > log.txt

Gradient
31.08.04, 19:56
das ging ja superschnell.
--line-buffered
Ich hätte sicher auch mal in den info-Seiten nachsehen sollen, aber, es hätte auch irgendwie an tcpdump liegen können und dann hätte ich wieder 2 Tage gesucht. Für mich war eine Frage hier im Forum jedenfalls der bequemere Weg. Danke
Gruß
Gradient

Hirogen2
31.08.04, 22:02
tcpdump -Alni eth0 | perl -ne '$|=1;print if/.*[UP][SA][ES][RS].*/' >log.txt

Nicht zu vergessen das -l bei tcpdump!

Gradient
31.08.04, 22:55
Damit stdout linegebuffered wird. Eigentlich steht schon Alles da. Ich hätte nur mal lesen müssen.
Danke auch Dir für den Hinweis.
Gruß
Gradient

formtapez
26.11.04, 20:09
Gibt es eine Möglichkeit diesen Buffered-Modus auch für andere Programme wie z.b cut, ascii oder sed anzuwenden ?
Diese Programme haben keinen Commandlineparameter für sowas.

MfG
formtapez