Netcat unter stretch

  • Hallo,


    in einem Bash-Skript analysiere ich den Datenstrom, der von einem Telnetserver kommt (Port 50001). Mir geht es dabei um Fehlermeldungen, die im Fall eines Fehlers sekündlich übermittelt werden, darum reichen mir 2s. Bisher hatte ich dafür folgenden Befehl:


    Code
    output=$(sleep 2 | nc localhost 50001)


    Das hat problemlos funktioniert bis incl. Jessie. Ab Stretch läuft diese Zeile endlos. Es gibt keine Fehlermeldung und kein Ende. Die Befehle einzeln (also "sleep 2" und "nc localhost 50001") laufen problemlos durch. Ich habe versucht herauszufinden, ob sich irgendetwas an netcat (also nc) geändert hat, konnte aber nichts finden.


    Hat jemand eine Idee, warum der Code unter Stretch nicht mehr funktioniert? Oder wie er wieder funktionieren könnte?


    Viele Grüße

    Konstantin

  • ... Telnetserver kommt (Port 50001)....


    Code
    output=$(sleep 2 | nc localhost 50001)


    Das hat problemlos funktioniert bis incl. Jessie. Ab Stretch läuft diese Zeile endlos. Es gibt keine Fehlermeldung und kein Ende. Die Befehle einzeln (also "sleep 2" und "nc localhost 50001") laufen problemlos durch. Ich habe versucht herauszufinden, ob sich irgendetwas an netcat (also nc) geändert hat, konnte aber nichts finden.

    Versuch mal als Test, in der console mit:

    Code
    nc -zv localhost 50001

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Hi rpi444,


    ich bekomme (unabhängig ob mit jessie oder stretch) folgende Ausgabe:


    Code
    pi@raspberry:~ $ nc -zv localhost 50001
    nc: connect to localhost port 50001 (tcp) failed: Connection refused
    Connection to localhost 50001 port [tcp/*] succeeded!


    Viele Grüße

    Konstantin

  • ich bekomme (unabhängig ob mit jessie oder stretch) folgende Ausgabe:


    Code
    pi@raspberry:~ $ nc -zv localhost 50001
    nc: connect to localhost port 50001 (tcp) failed: Connection refused
    Connection to localhost 50001 port [tcp/*] succeeded!

    Dann teste zusätzlich (im Vorfeld starten) mit:

    Code
    sudo tcpdump -c 100 -vvven tcp port 50001

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Das ergibt:

    Code
    pi@raspberry:~ $ sudo tcpdump -c 100 -vvven tcp port 50001
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel

    Wobei alles ab ^C erst gekommen ist, als ich nach einer Weile (> 10s) Strg+C gedrückt habe. Ich habe dann in einem zweiten Terminal den netcat-Befehl ausgeführt, das Ergebnis war unverändert.


    Vielleicht noch kurz, was ich z.B. mit Telnet bekomme:



    Viele Grüße

    Konstantin

  • Ich habe dann in einem zweiten Terminal den netcat-Befehl ausgeführt, das Ergebnis war unverändert.

    Ich habe doch geschrieben, dass Du tcpdump vor der netcat-Ausführung starten (und laufen lassen) sollst.


    EDIT:


    Anscheinend hat tcpdump nur auf dem eth0-Interface gesnifft. Versuch mal mit:

    Code
    sudo tcpdump -c 50 -vvveni lo tcp port 50001

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Ich habe doch geschrieben, dass Du tcpdump vor der netcat-Ausführung starten (und laufen lassen) sollst.

    Ja, das habe ich ja auch gemacht: tcpdump in dem einen Terminal, und dann netcat in einem zweiten Terminal gemacht. Der tcpdump-Befehl lief die ganze Zeit, und ich habe ihn erst abgebrochen, nachdem im zweiten Terminal der Befehl abgearbeitet war.


    Dein geänderter Aufruf liefert jetzt:


    Ich hoffe, das hilft dir irgendwie. Für mich ist das jetzt nur noch chinesisch... vielen Dank aber schon mal für die geopferte Zeit von dir.

  • Dein geänderter Aufruf liefert jetzt:

    Code
    pi@raspberry:~ $ sudo tcpdump -c 50 -vvveni lo tcp port 50001
    tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
    11:21:46.628314 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv6 (0x86dd), length 94: (flowlabel 0x435fd, hlim 64, next-header TCP (6) payload length: 40) ::1.55536 > ::1.50001: Flags [S], cksum 0x0030 (incorrect -> 0xd20b), seq 1897382276, win 43690, options [mss 65476,sackOK,TS val 34406476 ecr 0,nop,wscale 7], length 0
    11:21:46.628839 00:00:00:00:00:00 > 00:00:00:00:00:00, ethertype IPv6 (0x86dd), length 74: (flowlabel 0x92da5, hlim 64, next-header TCP (6) payload length: 20) ::1.50001 > ::1.55536: Flags [R.], cksum 0x001c (incorrect -> 0xe0ef), seq 0, ack 1897382277, win 0, length 0

    Versuch mal mit:

    Code
    telnet -4 localhost 50001

    , (d. h. nur mit IPv4) denn telnet benutzt auch IPv6 und damit gibt es richtigerweise ein reset+ack von lauschenden daemon.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden