/dev/tcp não encontrado

/dev/tcp não encontrado

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 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 capacidadedeveestar no meu sistema. O que estou fazendo de errado? Quais são as regras para usar /dev/tcpcorretamente?

Responder1

Você tem que usá-lo emredirecionamentos:

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 de Internet válido e port for um número inteiro de porta ou nome de serviço, o Bash tentará abrir o soquete TCP correspondente.

Então:

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

é a maneira certa de usá-lo.

Quando você usou /dev/tcp/74.125.225.19/80um pipe, bashtentou executar um comando chamado /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 --enable-net-redirectionsa opção.

informação relacionada