【问题标题】:how to feed a file to telnet如何将文件提供给 telnet
【发布时间】:2011-02-08 00:37:25
【问题描述】:

试图了解 http 和标头我正在玩 telnet 发送请求。不要一次又一次地输入所有内容,我想我会写一个包含我需要的所有命令的小文本文件。

我的文件很简单如下:

GET /somefile.php HTTP/1.1
Host: localhost

然后我尝试使用 io-redirection 将其提供给 telnet:

$ telnet localhost 80 < telnet.txt

但我得到的所有输出都是

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

我做错了什么?

【问题讨论】:

  • 7 年后重新审视这个问题,我认为 netcat 提出的解决方案的问题是文件的 CRLF/LF 问题。 HTTP 协议需要使用 CRLF 行终止符,并且不能仅与 LF 一起使用。

标签: http redirect pipe telnet


【解决方案1】:

我不知道telnet 是否有可能。你看过netcat吗?

【讨论】:

    【解决方案2】:

    telnet 不是这项工作的正确工具。试试看:

     netcat localhost 80 < telnet.txt
    

    顺便说一句,如果你的机器上没有安装该工具,你 可以在这里获取:

    http://netcat.sourceforge.net/

    【讨论】:

    • 我怎样才能恢复输出?我需要 http/html 响应
    • 响应只会显示在命令行的标准输出中。
    • 当我在标准输入上输入请求时会这样做,但在执行nc &lt; file 时它不会显示任何内容(尽管请求似乎有效)
    • cat telnet.txt - | nc localhost 80 可以解决问题。 cat 将文件和标准输入发送到 netcat。
    • 如果您使用@AndreasWederbrand 共享的语法,那么telnet 是完成这项工作的正确工具:cat telnet.txt - | telnet localhost 80
    【解决方案3】:

    问题是您立即将所有输入提供给 telnet 命令,而无需等待其输出。在输入所有输入文件后,它会自动导致 telnet “挂起”,因为输入流到达其结尾 (EOF)。发生这种情况时,Telnet 可能仍处于实际等待建立与远程服务器的连接的第一毫秒或微秒。 你想要做的是,向 telnet 发送一个命令,然后等待它完成它的工作,也就是等待服务器的响应,然后发送下一个命令,依此类推,只有在所有命令结束时才挂断您发送的实际已处理。 为此,请使用“预期”脚本而不是即时提供文本文件。 “期望”是完成这项工作的常用工具。

    【讨论】:

      【解决方案4】:

      上面的建议很不错,只是端口号是 23,而不是 80,用于 telnet。因此,如果您来这里是为了寻找如何将数据输入 telnet 端口(就像我一样,配置以太网控制的电源开关),那么请使用端口 23。

      【讨论】:

        猜你喜欢
        • 2017-11-28
        • 2012-01-17
        • 2021-07-21
        • 2020-07-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多