/ dev / tcp não encontrado

20

Quando tento executar o seguinte comando:

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

Recebo a seguinte mensagem de erro:

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

O seguinte comando 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

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

    
por IQAndreas 06.11.2015 / 07:53

1 resposta

33

Você precisa usá-lo em redirecionamentos :

Bash handles several filenames specially when they are used in redirections, as described in the following table:

...

/dev/tcp/host/port

If host is a valid hostname or Internet address, and port is an integer port number or service name, Bash attempts to open the corresponding TCP socket.

Entã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/80 em um canal, bash tentou executar um comando chamado /dev/tcp/74.125.225.19/80 e relatou um erro porque esse arquivo não existia.

A capacidade de lidar com /dev/tcp/host/port e /dev/udp/host/port no redirecionamento foi adicionada a bash na versão 2.04.

Você precisa compilar a opção bash with --enable-net-redirections .

    
por 06.11.2015 / 08:03

Tags