Alimentando o conteúdo de um arquivo de texto como comando para o telnet

10

Com o comando telnet docs.python.org 80 , posso fazer uma solicitação HTTP manual para http://docs.python.org/2/license.html , digitando a solicitação real.

Agora, em vez de digitá-lo ao vivo, eu gostaria de alimentar a solicitação de um arquivo de texto.

Eu tentei isso:

cat request.txt|telnet docs.python.org 80

request.txt :

GET /2/license.html HTTP/1.1 
Host: docs.python.org

(Você precisa terminar o arquivo com uma linha em branco ou receberá um pedido incorreto!)

Mas a conexão com o servidor é fechada imediatamente.

Como devo encaminhar corretamente request.txt para telnet docs.python.org 80 ?

edit:

É bom saber; Se você usar HEAD em vez de GET , receberá a mesma resposta de uma solicitação GET , exceto o corpo da mensagem.
Então, use HEAD se você quiser apenas examinar os cabeçalhos HTTP. (Ou seja, para que o conteúdo da resposta não atravesse a saída da sua shell).

    
por Bentley4 07.11.2013 / 13:50

2 respostas

20

Use netcat (comando nc) ao invés de "telnet", então

cat request.txt | nc docs.python.org 80

O Telnet é um hack rápido e fácil, mas o netcat é, aparentemente, a ferramenta correta para o trabalho.

    
por 07.11.2013 / 19:34
5

Eu realmente não tenho experiência com telnet , mas é preciso inserir o redirecionamento de arquivos:

telnet < abc.txt

Posso fazer com que ele se conecte ao servidor corretamente da seguinte forma:

$ cat abc.txt
open docs.python.org 80
$ telnet < abc.txt
telnet> Trying 82.94.164.162...
Connected to dinsdale.python.org.
Escape character is '^]'.
Connection closed by foreign host.

Talvez você possa descobrir como aceitar o comando GET , mas não consegui. Uma alternativa é usar um script expect :

#!/usr/bin/expect

spawn telnet docs.python.org 80
expect "Escape character is '^]'." { 
     send "GET /2/license.html HTTP/1.1\nHost: docs.python.org\n\n" 
}
interact

Você pode salvar o script como telnet.exp , torná-lo executável e executá-lo:

./telnet.exp > output.html
    
por 07.11.2013 / 18:37