Con el comando telnet docs.python.org 80, puedo hacer una solicitud HTTP manual para http://docs.python.org/2/license.html, escribiendo la solicitud real.
Ahora, en lugar de escribirlo en vivo, me gustaría alimentar la solicitud desde un archivo de texto.
Intenté esto:
cat request.txt|telnet docs.python.org 80
request.txt :
GET /2/license.html HTTP/1.1
Host: docs.python.org
(¡Tiene que terminar el archivo con una línea en blanco o recibirá una solicitud incorrecta!)
Pero la conexión al servidor se cierra de inmediato.
¿Cómo debo adecuadamente tubería Request.txt a telnet docs.python.org 80?
editar:
Es bueno saberlo; si usa en HEADlugar de GET, obtendrá la misma respuesta que si hiciera una GETsolicitud, excepto el cuerpo del mensaje.
Por lo tanto, úselo HEADsi solo desea examinar los encabezados HTTP. (es decir, para que el contenido de la respuesta no desordene la salida de su shell).

GETque ha publicado, recibo un408 Request Time-outerror. Además, ¿wget http://docs.python.org/2/license.htmlno es una opción?telnet docs.python.org 80, por lo que tendrá que darse prisa y escribir esas dos líneas (copiar y pegar si es necesario) en unos segundos o el servidor devolverá un error de tiempo de espera.telnet docs.python.org 80<ENTER>GET /2/license.html HTTP/1.1<ENTER>Host: docs.python.org<ENTER><ENTER><ENTER>una segunda vez al final es porque el protocolo HTTP requiere una línea vacía adicional después de los encabezados de solicitud. Consulte la sección de mensaje de solicitud del artículo wiki de HTTPtelnet < request.txtpero no puedo hacer que elGETcomando funcione.Respuestas:
Use netcat (comando nc) en lugar de "telnet", entonces
Telnet es un hack rápido y fácil, pero netcat es, aparentemente, la herramienta correcta para el trabajo.
fuente
Realmente no tengo ninguna experiencia,
telnetpero toma la entrada de la redirección de archivos:Puedo hacer que se conecte correctamente al servidor de la siguiente manera:
Quizás puedas descubrir cómo hacer que acepte el
GETcomando, pero no pude. Una alternativa es usar unexpectscript:Luego puede guardar el script como
telnet.exp, hacerlo ejecutable y ejecutarlo:fuente
expect! Elegí la respuesta de David porque es la mejor solución para este caso. No veo ninguna diferencia de uso entre netcap y telnet para lo que quería lograr. Sin embargo, gracias por el esfuerzo, Terdon, si pudiera votar más tu respuesta, lo haría.nces la mejor solución, debe aceptarlo.interactes la forma correcta de finalizar eseexpectscript.interact"le da el control del proceso actual al usuario, de modo que las pulsaciones de teclas se envían al proceso actual y se devuelven stdout y stderr del proceso actual" (eso es deman expect). Entonces,interactes la manera de darle al usuario una forma de usar realmente la conexión telnet.telnetlugar de interactuar con él, creo que debería terminar conclose -i $spawn_idalgo así. Entonces el script saldrá. Coninteractrealmente no pude salirtelneten absoluto, y tuve que cerrar mi terminal. Bastante miserable (aunque puede haber sido parcialmente mi culpa.)