/ dev / tcp introuvable

21

Lorsque j'essaie d'exécuter la commande suivante:

echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80

Je reçois le message d'erreur suivant:

bash: /dev/tcp/74.125.225.19/80: No such file or directory

La commande suivante fonctionne parfaitement, donc le problème concerne la façon dont j'utilise /dev/tcp:

echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80

Je suis dans Ubuntu 13.04, donc la capacité devrait être sur mon système. Qu'est-ce que je fais mal? Quelles sont les règles d'utilisation /dev/tcpcorrecte?

IQAndreas
la source

Réponses:

34

Vous devez l'utiliser dans les redirections :

Bash gère plusieurs noms de fichiers spécialement lorsqu'ils sont utilisés dans des redirections, comme décrit dans le tableau suivant:

...

/ dev / tcp / host / port

Si host est un nom d'hôte ou une adresse Internet valide et que port est un numéro de port ou un nom de service entier, Bash tente d'ouvrir le socket TCP correspondant.

Donc:

printf "GET / HTTP/1.1\n\n" > /dev/tcp/74.125.225.19/80

est la bonne façon de l'utiliser.

Lorsque vous l'avez utilisé /dev/tcp/74.125.225.19/80dans un canal, avez bashtenté d'exécuter une commande nommée /dev/tcp/74.125.225.19/80et signalé une erreur car ce fichier n'existait pas.


La possibilité de gérer /dev/tcp/host/portet /dev/udp/host/portde rediriger a été ajoutée à la bashversion 2.04.

Vous devez compiler bashavec --enable-net-redirectionsoption.

cuonglm
la source
Je vois, /dev/tcpest donc traité comme un "fichier" et non comme un script.
IQAndreas