Ich möchte, dass ein UDP-Echoserver Pakete abruft und genau das antwortet, was er erhalten hat. Wie kann ich das einfach mit netcatoder machen socat? Es sollte für immer am Leben bleiben und Pakete verarbeiten, die von mehreren Hosts stammen.
Ich möchte, dass ein UDP-Echoserver Pakete abruft und genau das antwortet, was er erhalten hat. Wie kann ich das einfach mit netcatoder machen socat? Es sollte für immer am Leben bleiben und Pakete verarbeiten, die von mehreren Hosts stammen.
Antworten:
Ein weiteres netcat-ähnliches Tool ist die nmap-Version, ncatdie viele eingebaute Extras enthält, um solche Dinge zu vereinfachen. Das würde funktionieren:
ncat -e /bin/cat -k -u -l 1235
-e bedeutet, dass es / bin / cat ausführt (um das zurückzugeben, was Sie eingeben).
-k bedeutet, dass es nach jeder Verbindung
lauscht.
-u bedeutet, dass udp
-l 1235 bedeutet, dass es Port 1235 abhört
Früher habe ich socat -v PIPE udp-recvfrom:5553,forkden Server und socat - udp:localhost:5553für Clients ausgeführt.
Das war eine große Hilfe!
socat TCP4-LISTEN:2000,fork EXEC:cat
Sie können auch socat (anstatt netcat) als Echoserver und netcat als Client verwenden.
Socat-Echoserver (lauscht auf TCP-Port 1234):
socat -v tcp-l:1234,fork exec:'/bin/cat'
Netcat-Client (stellt über TCP-Port 1234 eine Verbindung zum Server-IP her):
nc serverip 1234
Sie können ein C-Programm schreiben, das gabelt nc -u -l -p 4321 und dann dup (2) verwendet , um eine Verbindung herzustellen :
Dann liest der Elternteil in einer Endlosschleife aus stdin und schreibt in stdout, was auch immer der Elternteil liest.
socat -v PIPE UDP-LISTEN:5555,fork, aber die zweite Verbindung wird abgelehnt. Übrigens funktioniert es gut mit TCP-LISTEN. Ich vermeide es zu codieren, sonst könnte ich alles in C schreiben.
Wenn Sie unter Windows arbeiten und eine Unix-ähnliche Umgebung wie cygwin verwenden, stellt netcat migth den Parameter -e nicht zur Verfügung. Das hat gut funktioniert für mich.
netcat Lösung in Ubunutu vorinstalliert
Das netcatin Ubuntu 16.04 vorinstallierte kommt von netcat-openbsdund hat keine -cOption, aber das Handbuch gibt eine Lösung:
sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo
Dann Kundenbeispiel:
echo abc | netcat localhost 8000
TODO: Wie ändere ich den Wert der Eingabezeichenfolge? Folgendes gibt keine Antwort zurück:
cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo
Das Remote-Shell-Beispiel funktioniert jedoch:
cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo
Ich weiß jedoch nicht, wie ich mit gleichzeitigen Anfragen umgehen soll.