Ctrl D macht ohne -w 1 auch nichts, bleibt auch nach erster Zeile stehen.
Ohne -w 1 und ohne # ein # aus geht auch nicht.
Script auf Buster laeuft nur mit -w 1
Ctrl D macht ohne -w 1 auch nichts, bleibt auch nach erster Zeile stehen.
Ohne -w 1 und ohne # ein # aus geht auch nicht.
Script auf Buster laeuft nur mit -w 1
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):
und teste damit.
pi@raspberrypi:~/th $ /home/pi/th/test1
+ echo -n -e '\x32\x00\x55'
+ nc -u -q 2 192.168.0.20 8899
Bleibt auch nach erste Zeile stehen und nur Ctrl C kann es beenden.
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:
in jessie und buster.
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:
#!/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:
und von buster auch die Ausgabe von:
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).
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:
nicht.
EDIT 2:
BTW: Du hast im buster, noch nicht mit:
statt mit "-q 1 -w 1" getestet, oder?
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 !
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".
Soeben erfolgreich getestet mit Buster:
#!/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?
-q 1 durch
-w 1 ersetzt
Naja, dass diese Holzhammer-Methode funktioniert, wussten wir ja schon.
ja, aber die Frage ist, warum bleibt das gleiche Script beim nc aus jessie nicht stehen,
In 8 Jahren ändern sich die Versionen von bash, nc u.A. mehrmals. Manchmal werden auch Zero-Day-Exploids still und leise beseitigt. Und POSIX spielt inzwischen auch kräftig mit.
Servus !
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.
@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.
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!