server d'echo avec netcat ou socat

Je souhaite qu'un server UDP echo reçoive des packages et réponde exactement ce qu'il a reçu. Comment puis-je simplement le faire en utilisant netcat ou socat ? Il devrait restr vivant pour toujours et gérer les packages provenant de plusieurs hôtes.

Un autre outil de type netcat est la version nmap, ncat , qui a beaucoup de fonctionnalités pour simplifier des choses comme celle-ci. Cela fonctionnerait:

 ncat -e /bin/cat -k -u -l 1235 

-f signifie qu'il exécute / bin / cat (pour annuler ce que vous tapez)
-k signifie garder en vie, qu'il continue à écouter après chaque connection
-u signifie udp
-l 1235 signifie qu'il écoute sur le port 1235

J'ai utilisé socat -v PIPE udp-recvfrom:5553,fork pour exécuter le server et socat - udp:localhost:5553 pour les clients. C'était une grande aide!

Vous pouvez écrire un programme C qui forge nc -u -l -p 4321 puis utilise dup (2) pour se connecter:

  • nc stdin avec la stdout parent
  • nc stdout avec la stdin du parent

Ensuite, dans une boucle sans fin, le parent lit de stdin et écrit en stdout quel que soit le parent lit.

Vous pouvez également utiliser socat (plutôt que d'utiliser netcat) comme echo server et netcat en tant que client.

Socat echo server (écoute sur le port TCP 1234):

 socat -v tcp-l:1234,fork exec:'/bin/cat' 

Client Netcat (se connecte à serverip sur le port TCP 1234):

 nc serverip 1234 

Si vous utilisez Windows et utilisez un environnement unique comme cygwin, netcat migth ne fournit pas le paramètre -e. Cela m'a bien fonctionné.

http://bansky.net/echotool/

netcat solution pré-installée dans Ubunutu

Le netcat préinstallé dans Ubuntu 16.04 provient de netcat-openbsd et n'a aucune option -c , mais le manuel donne une solution:

 sudo mknod -m 777 fifo p cat fifo | netcat -l -k localhost 8000 > fifo 

Ensuite exemple client:

 echo abc | netcat localhost 8000 

TODO: comment modifier la valeur de la string d'input? Ce qui suit ne renvoie aucune réponse:

 cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo 

L'exemple de shell à distance fonctionne cependant:

 cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo 

Je ne sais cependant pas comment traiter les requests simultanées.