Serveur Socket Simple dans Bash?

Existe-t-il un moyen de se lier rapidement à un port TCP/adresse ip et d'imprimer simplement toutes les informations sur STDOUT? J'ai une solution de débogage simple qui écrit les choses à 127.0.0.1: 4444 et j'aimerais pouvoir simplement lier un port de bash et imprimer tout ce qui se présente. Est-il un moyen facile de faire cela?

63
demandé sur Naftuli Kay 2011-01-19 21:33:39

4 réponses

$ nc -k -l 4444 > filename.out

Voir nc(1)

94
répondu Nikolai Fetissov 2011-01-19 18:46:08

Juste parce que vous avez demandé comment faire dans bash, mais netcat réponse est très valide:

  $ exec 3<>/dev/tcp/127.0.0.1/4444
  $ cat <&3
41
répondu Diego Torres Milano 2011-01-20 04:19:15

Cela fonctionne comme vous l'attendez:

 nc -k -l 4444 |bash

Et puis vous

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

Ensuite, vous voyez la liste effectuée par bash.

[Un Bref Avertissement De Sécurité]
Bien sûr, si vous laissez une chose comme cela en cours d'exécution sur votre ordinateur, vous avez une grande ouverture d'accès à toutes sortes d'attaques, car les commandes peuvent être envoyés à partir d'un compte d'utilisateur sur n'importe quelle machine de votre réseau. Cela n'implémente aucune sécurité (authentification, identification) et envoie toutes les commandes transmises non crypté sur le réseau, de sorte qu'il peut très facilement être abusé.

9
répondu luk 2016-05-19 13:11:20

Ajout d'une réponse en utilisant ncat à laquelle @Freedom_Ben a fait allusion:

ncat -k -l 127.0.0.1 4444

Et explication des options de man ncat:

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
2
répondu Kilokahn 2017-08-21 20:45:04