ich habe eine Serverdienst, der "entfernt" auf einem Listening-Port lauscht, sagen wir mal TCP/10000. Ein Client verbindet sich an diesen TCP-Port, so dass Daten bidirektional transferiert werden. Nun möchte ich diesen TCP-Strom durch ein gzip/pigz leiten, so dass auf beiden Seiten der Traffik transparent komprimiert/dekomprimiert wird. Also dachte ich, ich nehmen socat und gzip/gunzip mittels exec, und zwar auf dem Client beispielsweise:
Code: Alles auswählen
socat -d -d TCP4-LISTEN:12345,reuseaddr,fork 'exec:/bin/gunzip!!exec:/bin/gzip|tcp:ziel:12345'
Code: Alles auswählen
socat -d -d TCP4-LISTEN:12345,reuseaddr,fork 'exec:/bin/gzip!!exec1:/bin/gunzip|tcp:localhost:10000'
Code: Alles auswählen
...
2017/11/27 14:44:06 socat[15675] E "exec:/bin/gzip|tcp": wrong number of parameters (3 instead of 1)
2017/11/27 14:44:06 socat[15675] N exit(1)
2017/11/27 14:44:06 socat[15643] N childdied(): handling signal 17
2017/11/27 14:44:06 socat[15643] W waitpid(): child 15675 exited with status 1
2017/11/27 14:44:06 socat[15676] N execvp'ing "/bin/gunzip"
gzip: compressed data not read from a terminal. Use -f to force decompression.
For help, type: gzip -h
Jemand eine Idee, wie das funktioniert? Version ist socat 1.X aus Stretch. Oder weiss Jemand ein alternatives Tool (ausser SSH w/ zlib)?
Gruss, mistersixt.