/ dev / tcp não encontrado

21

Quando tento executar o seguinte comando:

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

Eu recebi a seguinte mensagem de erro:

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

O comando a seguir funciona perfeitamente, então o problema envolve como eu estou usando /dev/tcp:

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

Estou no Ubuntu 13.04, então a capacidade deve estar no meu sistema. O que estou fazendo errado? Quais são as regras para usar /dev/tcpcorretamente?

IQAndreas
fonte

Respostas:

34

Você precisa usá-lo nos redirecionamentos :

O Bash lida com vários nomes de arquivos, especialmente quando eles são usados ​​em redirecionamentos, conforme descrito na tabela a seguir:

...

/ dev / tcp / host / porta

Se host for um nome de host ou endereço da Internet válido e porta for um número de porta inteiro ou nome de serviço, o Bash tentará abrir o soquete TCP correspondente.

Tão:

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

é o caminho certo para usá-lo.

Quando você usou /dev/tcp/74.125.225.19/80em um canal, bashtentou executar um comando nomeado /dev/tcp/74.125.225.19/80e relatou um erro porque esse arquivo não existia.


A capacidade de manipular /dev/tcp/host/porte /dev/udp/host/portredirecionar foi adicionada bashna versão 2.04.

Você precisa compilar bashcom a --enable-net-redirectionsopção

cuonglm
fonte
Entendo, então /dev/tcpé tratado como um "arquivo" e não como um script.
precisa saber é o seguinte