Thread Datenstrom in Realtime mitlesen: tcpdump über Pipe an Perlscript übergebn
(5 answers)
Opened by Gast at 2007-01-02 14:17
Hi sid burn !
Konnte dir leider nicht so schnell antworten. Leichte Login/Registrierungs-Probleme auf dem Board gehabt. (Die helfen einem hier echt schnell! Nochmal besten Dank an Renee) Zu meinem Problem ... Ne Sekunde Unterschied wär ja vertretbar. Vor allem, weil ich das Lesen der Log-Dateien auch auf 3sec.-Zyklus (mit File::Tail) gestellt habe. Das was bei mir auftritt sind aber teilweise 20-30sec oder noch länger (je nach Datenmenge). Das ist nicht mehr vertretbar. Identisches Problem hatte ich bei einem Überwachungsscript von nem FTP-Server. Die Logs, die das Script geschrieben hat sind erst nach 20-30sec in der Datei erschienen (das kann nicht an tail -f liegen). Das konnte ich dann folgendermassen erzwingen: Code: (dl
)
1 open (LOGDATEI, ">>${logdat}") or die("Dateifehler!"); # Log-Datei öffnen zum schreiben Das identische Problem tritt beim Schreiben der Daten von tcpdump in die named Pipe auf, nur das ich so eine Variable und Perl-Code natürlich bei tcpdump nicht habe. Bei ner älteren SuSE (ich glaube 8.2) lief das alles ohne Probleme. Irgendwann so zwischen 9.x und 10.1 muß sich da was geändert haben. Bei ner 9.2 habe ich das mit dem FTP-Überwachungsscript. Ich habe schon die gesammte man bash durchgesucht, mit apropos alles gurchgewühlt was irgendwie mit buffer, file oder flush war und meine O&´Reilly-Bücher durchgeblätter (Linux in a Nutshell, Perl Kochbuch, Perl Programmierung, ...) alles nix. In nem anderen Script lief das bis jetzt so ... Code: (dl
)
1 open (LOGPIPE, $pipename) || print "konnte $pipename nicht oeffnen\n"; Einfachste Art, Eingabedaten aus ner Pipe zu lesen. Mit dem Script habe ich mit tcpdump gelesen und das Transfervolumen einzelner Rechner Richtung Internet aufsummiert. Meiner Meinung nach muß das Problem an der Pipe und tcpdump oder der Shell aus dem das startet liegen. Ich weiß aber nicht mehr weiter. Ich laß mich aber auch gerne belehren ;-) Gruß Bernd |