Bash scipt funktioiert mit Jessie nicht aber mit Buster

  • Bash scipt funktioiert mit Jessie nicht aber mit Buster? Schau mal ob du hier fündig wirst!

  • Script auf Buster laeuft nur mit -w 1

    OK, dann erstelle manuell auf deinem Buster, mit nano ein Script mit dem Inhalt (ohne -w 1):

    Code
    #!/usr/bin/bash -x
    #
    echo -n -e "\x32\x00\x55" | nc -u -q 2 192.168.0.20 8899
    exit 0

    und teste damit.

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Bleibt auch nach erste Zeile stehen und nur Ctrl C kann es beenden.

    Dann teste mal auch mit "-q 0 -N" statt mit "-q 2".

    Evtl. liegt es auch an der netcat-Version. Vergleiche:

    Code
    apt-cache policy netcat
    ls -la /bin/nc.openbsd

    in jessie und buster.

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Buster

    pi@raspberrypi:~/th $ apt-cache policy netcat

    netcat:

    Installiert: 1.10-41.1

    Installationskandidat: 1.10-41.1

    Versionstabelle:

    *** 1.10-41.1 500

    500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages

    100 /var/lib/dpkg/status

    Jessie

    pi@raspberrypi:~/th $ apt-cache policy netcat

    netcat:

    Installiert: (keine)

    Installationskandidat: 1.10-41

    Versionstabelle:

    1.10-41 0

    500 http://ftp.de.debian.org/debian/ jessie/main armhf Packages

    Komisch es scheint so, als mit Jessie Karte nc gar nicht installiert ist, aber seit Jahren funktioniert hat ?

    Soeben nochmals mit Jessie getestet:

    Bash
    #!/bin/bash -x
    
    
    echo -n -e "\x32\x00\x55" | nc -u -q 1 192.168.0.20 8899  # ein
    sleep 1
    echo -n -e "\x39\x00\x55" | nc -u -q 1 192.168.0.20 8899  # aus
    sleep 1

    Funtioniert einwandfrei.

    Bei Jessie which bash:

    pi@raspberrypi:~/th $ which bash

    /bin/bash

    Edit:

    Jessie

    pi@raspberrypi:~/th $ ls -la /bin/nc.openbsd

    -rwxr-xr-x 1 root root 26256 Jun 23 2012 /bin/nc.openbsd

  • Edit:

    Jessie

    pi@raspberrypi:~/th $ ls -la /bin/nc.openbsd

    -rwxr-xr-x 1 root root 26256 Jun 23 2012 /bin/nc.openbsd

    Das sind dann evtl. verschiedene netcat-Versionen. Poste mal von jessie und von buster, die Aisgabe von:

    Code
    strings /bin/nc.openbsd | grep -iE 'eof|version'

    und von buster auch die Ausgabe von:

    Code
    ls -la /bin/nc.openbsd

    EDIT:

    Für die OpenBSD-Implementierung von netcat, neutzt man "-q" und für die GNU-Implementierung von netcat, benutzt man "-c". Und wenn man weder die eine noch die andere Implementierung von netcat benutztbzw. hat, hilft die "Holzhammer"-Methode mit "-w" (timeout).

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

    2 Mal editiert, zuletzt von rpi444 (2. September 2022 um 12:00)

  • Jessie

    pi@raspberrypi:~/th $ strings /bin/nc.openbsd | grep -iE 'eof|version'

    -q secs quit after EOF on stdin and delay of secs

    .gnu.version

    .gnu.version_r


    Buster

    pi@raspberrypi:~/th $ strings /bin/nc.openbsd | grep -iE 'eof|version'

    -N Shutdown the network socket after EOF on stdin

    -q secs quit after EOF on stdin and delay of secs

    .gnu.version

    .gnu.version_r

    Buster

    pi@raspberrypi:~/th $ ls -la /bin/nc.openbsd

    -rwxr-xr-x 1 root root 30188 Feb 12 2019 /bin/nc.openbsd

  • Buster

    pi@raspberrypi:~/th $ ls -la /bin/nc.openbsd

    -rwxr-xr-x 1 root root 30188 Feb 12 2019 /bin/nc.openbsd

    OK, ein Unterschied ist da, aber ganz schlau werde ich daraus nicht.

    Siehe auch EDIT oben, im Beitrag #26.

    EDIT:

    Lt. der Ausgabe von strings, gibt es bei jessie, das:

    Code
    -N Shutdown the network socket after EOF on stdin

    nicht.

    EDIT 2:

    BTW: Du hast im buster, noch nicht mit:

    Code
    -q 0 -N

    statt mit "-q 1 -w 1" getestet, oder?

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Eine Zeichenkette wird in Linux üblicherweise mit \n (newline, LF, \x0A ) abgeschlossen.

    Durch die echo Option -n wird das aber verhindert und es wird auch an nc keine Zeichenkette, sondern nur drei Einzelzeichen ohne LF (bzw LF/NL-Windows) übergeben.

    Spätestens hier bleibt IMHO das Script stehen, weil es auf das Zeichenkette-Ende-Zeichens wartet.

    < man echo >, < man ascii >

    Warum die Option -n dem Echobefejl mitgegeben werden muss, kann ich aus dem bisherigen Kontext des Threads nicht erkennen.

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Spätestens hier bleibt IMHO das Script stehen, weil es auf das Zeichenkette-Ende-Zeichens wartet.

    ja, aber die Frage ist, warum bleibt das gleiche Script beim nc aus jessie nicht stehen, sondern nur beim buster (... wenn die Optionen für nc richtig benutzt werden)?

    BTW: Man kann/könnte evtl. das EOF, auch als Zeichensequenz, für nc "mitgeben".

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Soeben erfolgreich getestet mit Buster:

    Code
    #!/usr/bin/bash -x
    
    echo -n -e "\x32\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x39\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x32\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x39\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x32\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x39\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x32\x00\x55" | nc -u -w 1 192.168.0.20 8899
    echo -n -e "\x39\x00\x55" | nc -u -w 1 192.168.0.20 8899

    Schaltet 4x ein und 4x aus

  • Soeben erfolgreich getestet mit Buster:

    Und was hast Du jetzt anders gemacht im Buster?

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • -q 1 durch

    -w 1 ersetzt

    Naja, dass diese Holzhammer-Methode funktioniert, wussten wir ja schon.

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Probier mal socat. Da sollte es keine Unterschiede wie bei netcat geben.

    Code
    echo -ne "\x32\x00\x55" | socat -t 1 - UDP:192.168.0.20:8899

    Nach einer Sekunde wird der Socket geschlossen. Empfangene Daten innerhalb der Zeit werden nach stdout ausgeben.

  • In 8 Jahren ändern sich die Versionen von bash, nc u.A. mehrmals.

    Ja, aber das ist mir zu pauschal und heißt nicht, dass man sich keine Gedanken machen soll/kann, bzgl. dem was sich (genau) geändert hat.

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

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • @DeaD_EyE

    Danke für den Vorschlag mit socat, das hatte ich vor Jahren auch mal probiert und dass funktionierte auch einwandfrei.

    Nach einer neu Installation von Jessie vor 1Jahr, konnte ich socat nicht mehr installieren, da sudo apt-get install socat nicht mehr ging.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!