как подать файл в telnet

пытаясь понять http и заголовки, я играл с telnet для отправки запросов. чтобы не печатать все снова и снова, я думал, что напишу небольшой текстовый файл со всеми необходимыми командами.

мой файл так прост, как показано ниже:

GET /somefile.php HTTP/1.1
Host: localhost

затем я пытаюсь скормить его telnet с io-перенаправлением:

$ telnet localhost 80 < telnet.txt

но все выходные я получаю

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

что я делаю не так?

3 ответов


telnet не является правильным инструментом для этой работы. Попробуйте:

netcat localhost 80

btw, если у вас нет инструмента, установленного на вашем компьютере, вы можете получить его здесь:

http://netcat.sourceforge.net/


проблема в том, что вы подаете все входные данные команде telnet мгновенно, не дожидаясь ее вывода. Сразу после того, как весь ваш входной файл будет подан, он автоматически заставит telnet "повесить трубку", потому что входной поток достигает своего конца (EOF). Telnet все еще может находиться в первой миллисекунде или микросекунде фактического ожидания для установления соединения с удаленным сервером, когда это произойдет. То, что вы хотите сделать, это отправить команду в telnet, а затем ждать, пока он выполнит свою работу для ответа сервера отправьте следующую команду, и так далее, и только повесьте трубку в самом конце, когда все команды, которые вы отправили, были фактически обработаны. Для этого используйте скрипт "expect" вместо insta-подачи текстового файла. "Ожидать" - это обычный инструмент для выполнения этой работы.


Я не знаю, возможно ли это с telnet. Вы смотрели на netcat?