web-dev-qa-db-de.com

Simple Socket Server in Bash?

Gibt es eine Möglichkeit, sich schnell an eine TCP Port/IP-Adresse zu binden und einfach alle Informationen an STDOUT auszudrucken? Ich möchte in der Lage sein, einfach einen Port aus Bash zu binden und alles zu drucken, was auftaucht. Gibt es eine einfache Möglichkeit, dies zu tun?

70
Naftuli Kay
$ nc -k -l 4444 > filename.out

siehe nc(1)

105

Nur weil Sie gefragt haben, wie es in bash gemacht werden soll, obwohl netcat eine sehr gültige Antwort ist:

  $ exec 3<>/dev/tcp/127.0.0.1/4444
  $ cat <&3
46

Das funktioniert so, wie Sie es erwarten:

 nc -k -l 4444 |bash

und dann du

echo "ls" >/dev/tcp/127.0.0.1/4444

dann sehen Sie die Auflistung von Bash durchgeführt.

[Eine kurze Sicherheitswarnung]
Wenn Sie so etwas auf Ihrem Computer laufen lassen, steht Ihnen natürlich ein weit offenes Gateway für alle Arten von Angriffen zur Verfügung, da Befehle von jedem Benutzerkonto auf jedem Host in Ihrem Netzwerk gesendet werden können. Dies beinhaltet keinerlei Sicherheit (Authentifizierung, Identifizierung) und sendet alle übertragenen Befehle unverschlüsselt über das Netzwerk, sodass sie sehr leicht missbraucht werden können.

10
luk

Hinzufügen einer Antwort mit ncat, auf die @Freedom_Ben angespielt hat:

ncat -k -l 127.0.0.1 4444

und erklärung der optionen von man ncat:

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
4
Kilokahn