58 votes

Comment faire un serveur Echo avec Bash ?

Comment écrire un script bash de serveur d'écho à l'aide d'outils tels que nc, echo, xargs, etc., capables de traiter simultanément les demandes de plusieurs clients, chacun avec une connexion durable ?

Le meilleur que j'ai trouvé jusqu'à présent est

 nc -l -p 2000 -c 'xargs -n1 echo'

mais il ne permet qu'une seule connexion.

54voto

David Costa Points 740

Si vous utilisez ncat au lieu de nc, votre ligne de commande fonctionne correctement avec plusieurs connexions mais (comme vous l'avez souligné) sans -p.

 ncat -l 2000 -k -c 'xargs -n1 echo'

ncat est disponible sur http://nmap.org/ncat/ .

PS avec le netcat d'origine du Hobbit (nc), l'indicateur -c n'est pas pris en charge.

Mise à jour : -k (--keep-open) est désormais requis pour gérer plusieurs connexions.

35voto

douyw Points 971

Voici quelques exemples. ncat services simples

serveur d'écho TCP

 ncat -l 2000 --keep-open --exec "/bin/cat"

serveur d'écho UDP

 ncat -l 2000 --keep-open --udp --exec "/bin/cat"

22voto

Caesar Points 108

Si ncat n'est pas une option, socat fonctionnera également :

 socat TCP4-LISTEN:2000,fork EXEC:cat

Le fork est nécessaire pour que plusieurs connexions puissent être acceptées. L'ajout de reuseaddr à TCP4-LISTEN peut être pratique.

0voto

Mohan Nbs Points 1

qu'en est-il de...

 #! /bin/sh

while :; do
/bin/nc.traditional -k -l -p 3342 -c 'xargs -n1 echo'
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X