Zum Inhalt springen

Socat: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Linux socat Command Examples
'''socat''' - Multipurpose relay (SOcket CAT)


v socat - TCP:192.168.0.10:80
== Beschreibung ==
Send data from stdin to 192.168.0.10:80 over TCP and show response
; Bidirektionale Byte-Streams aufauben
v socat TCP-LISTEN:8080,fork TCP:192.168.0.10:80
* Daten überagen
Listen on port 8080 and forward traffic to 192.168.0.10 at port 80
 
v socat TCP-LISTEN:9000,reuseaddr fork EXEC:/bin/cat
Da die Streams aus einer Vielzahl unterschiedlicher Datensenken und -quellen (siehe Adresstypen) aufgebaut werden können
Create a simple TCP echo server on port 9000
* da viele Adressoptionen auf die Streams angewendet werden können, kann socat für viele verschiedene Zwecke verwendet werden Filan ist ein Dienstprogramm, das Informationen über seine aktiven Dateideskriptoren auf stdout ausgibt
v socat TCP4-LISTEN:1234 fork TCP4:localhost:5678
* Es wurde zum Debuggen von socat geschrieben, kann aber auch für andere Zwecke nützlich sein
Relay traffic between ports 1234 and 5678 on localhost u
* Verwenden Sie die Option -h, um weitere Informationen zu erhalten
Created by
 
v socat STDIN UDP:192.168.0.10:5678 Dan Nanni
 
Read input from the terminal and send it to UDP server study-notes.org
; Procan
v socat TCP-LISTEN:8081,fork FILE:/path/to/output.log
Procan ist ein Dienstprogramm, das Informationen über Prozessparameter auf stdout ausgibt
Serve a file over TCP. Connect to port 8081 to read the log file
* Es wurde geschrieben, um einige UNIX-Prozesseigenschaften besser zu verstehen und zum Debuggen von socat, kann aber auch für andere Zwecke nützlich sein
v socat TCP-LISTEN:6000,reuseaddr OPEN:/path/to/file,create,append
 
Receive data over TCP at port 6000 and append it to a local file
; Lebenszyklus
v socat TCP-LISTEN:7000,fork /dev/ttyUSB0,b115200,raw
Der Lebenszyklus einer socat-Instanz besteht in der Regel aus vier Phasen
Forward TCP traffic on port 7000 to a serial device at 115200 baud rate
 
v socat UNIX-LISTEN:/tmp/mysocket,fork EXEC:/bin/cat
; Init-Phase
Listen on a UNIX socket and echo incoming data
In der init-Phase werden die Befehlszeilenoptionen geparst und die Protokollierung initialisiert Während der open-Phase öffnet socat die erste Adresse und anschließend die zweite Adresse
v socat TCP4-LISTEN:12345,fork,delay=500ms TCP4:localhost:80
* Diese Schritte sind in der Regel blockierend; daher müssen insbesondere bei komplexen Adresstypen wie Socks Verbindungsanfragen oder Authentifizierungsdialoge abgeschlossen sein, bevor der nächste Schritt gestartet wird
Introduce 500ms delay to forwarded traffic between ports 12345 and 80
 
v socat - OPENSSL:example.com:443,verify=0
; Übertragungsphase
Connect to example.com on port 443 while disabling certificate verification
In der Übertragungsphase überwacht socat die Lese- und Schreib-Dateideskriptoren beider Streams über select() und wenn auf einer Seite Daten verfügbar sind und auf die andere Seite geschrieben werden können, liest socat diese, führt bei Bedarf Zeilenumbruchkonvertierungen durch und schreibt die Daten in den Schreib-Dateideskriptor des anderen Streams, um dann weiter auf weitere Daten in beide Richtungen zu warten
v socat OPENSSL-LISTEN:8443,cert=server.pem,verify=0,fork EXEC:/bin/cat
Wenn einer der Streams effektiv EOF erreicht, beginnt die Schließungsphase
Listen on port 8443 over SSL/TLS as a simple SSL echo server
* Socat überträgt die EOF-Bedingung an den anderen Stream, d. h. es versucht, nur seinen Schreibstream zu schließen, um ihm die Möglichkeit zu geben, ordnungsgemäß zu beenden
v socat TCP-LISTEN:8080,fork OPENSSL:www.example.com:443,verify=0
* Für eine definierte Zeit überträgt socat weiterhin Daten in die andere Richtung, schließt dann aber alle verbleibenden Kanäle und beendet sich
Listen on local port 8080 and forward traffic to example.com over SSL/TLS
 
v socat OPENSSL-LISTEN:8443,cert=test.pem,verify=0,fork TCP:localhost:8080
== Installation ==
Accept SSL connections on 8443 and forward them to non-SSL 8080
<syntaxhighlight lang="bash" highlight="1" line copy>
sudo apt install socat
</syntaxhighlight>
 
== Aufruf ==
<syntaxhighlight lang="bash" highlight="1" line copy>
socat [options] <address> <address>
socat -V
socat -h[h[h]] | -?[?[?]]
filan
procan
</syntaxhighlight>
 
=== Optionen ===
{| class="wikitable sortable options gnu big"
|-
! Unix !! GNU !! Parameter !! Beschreibung
|-
| || || ||
|-
|}
 
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
{| class="wikitable options col1center big"
|-
! Wert !! Beschreibung
|-
| 0 || Erfolg
|-
| >0  || Fehler
|}
 
== Anwendung ==
Daten von stdin über TCP an 192.168.0.10:80 senden und Antwort anzeigen
<syntaxhighlight lang="bash" highlight="1" line copy>
socat - TCP:192.168.0.10:80
</syntaxhighlight>
 
Auf Port 8080 lauschen und Datenverkehr an 192.168.0.10 auf Port 80 weiterleiten
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP-LISTEN:8080,fork TCP:192.168.0.10:80
</syntaxhighlight>
 
Erstellen Sie einen einfachen TCP-Echo-Server auf Port 9000
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP-LISTEN:9000,reuseaddr fork EXEC:/bin/cat
</syntaxhighlight>
 
Leiten Sie den Datenverkehr zwischen den Ports 1234 und 5678 auf localhost weiter u
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP4-LISTEN:1234 fork TCP4:localhost:5678
</syntaxhighlight>
 
Lesen Sie die Eingabe vom Terminal und senden Sie sie an den UDP-Server study-notes.org#
<syntaxhighlight lang="bash" highlight="1" line copy>
socat STDIN UDP:192.168.0.10:5678 Dan Nanni
</syntaxhighlight>
 
Stellen Sie eine Datei über TCP bereit. Verbinden Sie sich mit Port 8081, um die Protokolldatei zu lesen
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP-LISTEN:8081,fork FILE:/path/to/output.log
</syntaxhighlight>
 
Daten über TCP an Port 6000 empfangen und an eine lokale Datei anhängen
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP-LISTEN:6000,reuseaddr OPEN:/path/to/file,create,append
</syntaxhighlight>
 
Leiten Sie den TCP-Datenverkehr an Port 7000 an ein serielles Gerät mit einer Baudrate von 115200 weiter
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP-LISTEN:7000,fork /dev/ttyUSB0,b115200,raw
</syntaxhighlight>
 
Auf einem UNIX-Socket lauschen und eingehende Daten wiedergeben
<syntaxhighlight lang="bash" highlight="1" line copy>
socat UNIX-LISTEN:/tmp/mysocket,fork EXEC:/bin/cat
</syntaxhighlight>
 
500 ms Verzögerung für weitergeleiteten Datenverkehr zwischen den Ports 12345 und 80 einführen
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP4-LISTEN:12345,fork,delay=500ms TCP4:localhost:80
</syntaxhighlight>
 
Verbindung zu example.com auf Port 443 herstellen und dabei die Zertifikatsüberprüfung deaktivieren
<syntaxhighlight lang="bash" highlight="1" line copy>
socat - OPENSSL:example.com:443,verify=0
</syntaxhighlight>
 
Auf Port 8443 über SSL/TLS als einfacher SSL-Echo-Server lauschen
<syntaxhighlight lang="bash" highlight="1" line copy>
socat OPENSSL-LISTEN:8443,cert=server.pem,verify=0,fork EXEC:/bin/cat
</syntaxhighlight>
 
Auf lokalem Port 8080 lauschen und Datenverkehr über SSL/TLS an example.com weiterleiten
<syntaxhighlight lang="bash" highlight="1" line copy>
socat TCP-LISTEN:8080,fork OPENSSL:www.example.com:443,verify=0
</syntaxhighlight>
 
SSL-Verbindungen auf 8443 akzeptieren und an Nicht-SSL 8080 weiterleiten
<syntaxhighlight lang="bash" highlight="1" line copy>
socat OPENSSL-LISTEN:8443,cert=test.pem,verify=0,fork TCP:localhost:8080
</syntaxhighlight>
 
=== Fehlerbehebung ===
 
== Konfiguration ==
=== Dateien ===
{| class="wikitable options big"
|-
! Datei !! Beschreibung
|-
| ||
|-
| ||
|}
 
<noinclude>
 
== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
 
=== Dokumentation ===
; Man-Page
# [https://manpages.debian.org/stable/socat/socat.1.en.html socat(1)]
 
<!--
; Info-Pages
-->
 
=== Links ===
==== Projekt ====
==== Weblinks ====
 
{{DEFAULTSORT:socat}}
{{DISPLAYTITLE:socat}}
 
[[Kategorie:new]]
 
</noinclude>

Aktuelle Version vom 14. Oktober 2025, 12:26 Uhr

socat - Multipurpose relay (SOcket CAT)

Beschreibung

Bidirektionale Byte-Streams aufauben
  • Daten überagen

Da die Streams aus einer Vielzahl unterschiedlicher Datensenken und -quellen (siehe Adresstypen) aufgebaut werden können

  • da viele Adressoptionen auf die Streams angewendet werden können, kann socat für viele verschiedene Zwecke verwendet werden Filan ist ein Dienstprogramm, das Informationen über seine aktiven Dateideskriptoren auf stdout ausgibt
  • Es wurde zum Debuggen von socat geschrieben, kann aber auch für andere Zwecke nützlich sein
  • Verwenden Sie die Option -h, um weitere Informationen zu erhalten


Procan

Procan ist ein Dienstprogramm, das Informationen über Prozessparameter auf stdout ausgibt

  • Es wurde geschrieben, um einige UNIX-Prozesseigenschaften besser zu verstehen und zum Debuggen von socat, kann aber auch für andere Zwecke nützlich sein
Lebenszyklus

Der Lebenszyklus einer socat-Instanz besteht in der Regel aus vier Phasen

Init-Phase

In der init-Phase werden die Befehlszeilenoptionen geparst und die Protokollierung initialisiert Während der open-Phase öffnet socat die erste Adresse und anschließend die zweite Adresse

  • Diese Schritte sind in der Regel blockierend; daher müssen insbesondere bei komplexen Adresstypen wie Socks Verbindungsanfragen oder Authentifizierungsdialoge abgeschlossen sein, bevor der nächste Schritt gestartet wird
Übertragungsphase

In der Übertragungsphase überwacht socat die Lese- und Schreib-Dateideskriptoren beider Streams über select() und wenn auf einer Seite Daten verfügbar sind und auf die andere Seite geschrieben werden können, liest socat diese, führt bei Bedarf Zeilenumbruchkonvertierungen durch und schreibt die Daten in den Schreib-Dateideskriptor des anderen Streams, um dann weiter auf weitere Daten in beide Richtungen zu warten Wenn einer der Streams effektiv EOF erreicht, beginnt die Schließungsphase

  • Socat überträgt die EOF-Bedingung an den anderen Stream, d. h. es versucht, nur seinen Schreibstream zu schließen, um ihm die Möglichkeit zu geben, ordnungsgemäß zu beenden
  • Für eine definierte Zeit überträgt socat weiterhin Daten in die andere Richtung, schließt dann aber alle verbleibenden Kanäle und beendet sich

Installation

sudo apt install socat

Aufruf

socat [options] <address> <address>
socat -V
socat -h[h[h]] | -?[?[?]]
filan
procan

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung

Daten von stdin über TCP an 192.168.0.10:80 senden und Antwort anzeigen

socat - TCP:192.168.0.10:80

Auf Port 8080 lauschen und Datenverkehr an 192.168.0.10 auf Port 80 weiterleiten

socat TCP-LISTEN:8080,fork TCP:192.168.0.10:80

Erstellen Sie einen einfachen TCP-Echo-Server auf Port 9000

socat TCP-LISTEN:9000,reuseaddr fork EXEC:/bin/cat

Leiten Sie den Datenverkehr zwischen den Ports 1234 und 5678 auf localhost weiter u

socat TCP4-LISTEN:1234 fork TCP4:localhost:5678

Lesen Sie die Eingabe vom Terminal und senden Sie sie an den UDP-Server study-notes.org#

socat STDIN UDP:192.168.0.10:5678 Dan Nanni

Stellen Sie eine Datei über TCP bereit. Verbinden Sie sich mit Port 8081, um die Protokolldatei zu lesen

socat TCP-LISTEN:8081,fork FILE:/path/to/output.log

Daten über TCP an Port 6000 empfangen und an eine lokale Datei anhängen

socat TCP-LISTEN:6000,reuseaddr OPEN:/path/to/file,create,append

Leiten Sie den TCP-Datenverkehr an Port 7000 an ein serielles Gerät mit einer Baudrate von 115200 weiter

socat TCP-LISTEN:7000,fork /dev/ttyUSB0,b115200,raw

Auf einem UNIX-Socket lauschen und eingehende Daten wiedergeben

socat UNIX-LISTEN:/tmp/mysocket,fork EXEC:/bin/cat

500 ms Verzögerung für weitergeleiteten Datenverkehr zwischen den Ports 12345 und 80 einführen

socat TCP4-LISTEN:12345,fork,delay=500ms TCP4:localhost:80

Verbindung zu example.com auf Port 443 herstellen und dabei die Zertifikatsüberprüfung deaktivieren

socat - OPENSSL:example.com:443,verify=0

Auf Port 8443 über SSL/TLS als einfacher SSL-Echo-Server lauschen

socat OPENSSL-LISTEN:8443,cert=server.pem,verify=0,fork EXEC:/bin/cat

Auf lokalem Port 8080 lauschen und Datenverkehr über SSL/TLS an example.com weiterleiten

socat TCP-LISTEN:8080,fork OPENSSL:www.example.com:443,verify=0

SSL-Verbindungen auf 8443 akzeptieren und an Nicht-SSL 8080 weiterleiten

socat OPENSSL-LISTEN:8443,cert=test.pem,verify=0,fork TCP:localhost:8080

Fehlerbehebung

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



Dokumentation

Man-Page
  1. socat(1)


Links

Projekt

Weblinks