2010-04-14 20 views
7

tratando de entender http y encabezados Estaba jugando con telnet para enviar solicitudes. no escribir todo una y otra y otra vez, pensé que escribiría un pequeño archivo de texto con todos los comandos que necesito.cómo alimentar un archivo a telnet

mi archivo es tan simple como sigue:

GET /somefile.php HTTP/1.1 
Host: localhost 

i luego tratar de alimentarlo al telnet con io-redirección:

$ telnet localhost 80 < telnet.txt 

pero todas las salidas que consigo es

Trying ::1... 
Connected to localhost. 
Escape character is '^]'. 
Connection closed by foreign host. 

¿Qué estoy haciendo mal?

+1

Revisando esta pregunta después de 7 años, creo que el problema con las soluciones propuestas con netcat fueron problemas CRLF/LF con el archivo. El protocolo HTTP requiere el uso de terminadores de línea CRLF y no funcionará solo con LF. – knittl

Respuesta

5

telnet no es la herramienta adecuada para este trabajo. Proveedores:

netcat localhost 80 < telnet.txt

Por cierto, si usted no tiene la herramienta instalada en su máquina, puede obtenerlo aquí:

http://netcat.sourceforge.net/

+0

¿Cómo puedo recuperar mi producción? Necesito la respuesta http/html – knittl

+0

La respuesta aparecerá en la línea estándar de la línea de comandos. – chetan

+0

lo hace cuando ingreso la solicitud en stdin, pero al hacer 'nc knittl

0

No sé si eso es posible con telnet. ¿Has mirado netcat?

4

El problema es que alimentas todas las entradas al comando telnet al instante, sin esperar su salida. Inmediatamente después de que se haya alimentado todo su archivo de entrada, automáticamente causará que telnet "cuelgue", porque el flujo de entrada llega a su fin (EOF). Es posible que Telnet aún esté en su primer milisegundo o microsegundo esperando realmente establecer una conexión con el servidor remoto cuando esto ocurra. Lo que quiere hacer es enviar un comando a telnet, luego esperar a que haga su trabajo, también esperar la respuesta del servidor, luego enviar el siguiente comando, y así sucesivamente, y solo colgar al final cuando todo el los comandos que usted envió fueron procesados. Para hacer esto, use una secuencia de comandos 'esperar' en lugar de instalar un archivo de texto. 'Esperar' es la herramienta habitual para hacer este trabajo.

Cuestiones relacionadas