Linux脚本telnet HEAD请求[重复]

Posted

技术标签:

【中文标题】Linux脚本telnet HEAD请求[重复]【英文标题】:Linux script telnet HEAD request [duplicate] 【发布时间】:2015-01-07 03:19:50 【问题描述】:

所以基本上我正在尝试做一些相当简单的事情;我正在尝试制作一个脚本来远程登录到微软服务器并请求页面的 HEAD。但正如预期的那样,它不起作用。如果我只是手动将它输入到控制台中它可以工作,但是在执行脚本时根本不起作用。

这是我制作的脚本:

回显“telnet $1 $2” 睡觉 10 echo "HEAD $3 HTTP/1.0" 回声 回声 睡觉2

在控制台中输入:

./gethost microsoft.com 80 /

结果如下:

telnet microsoft.com 80 HEAD / HTTP/1.0

然后在最后两个空回声后返回控制台,老实说,我不明白,我什至增加了睡眠(可能的网络延迟)。

【问题讨论】:

echo 只是打印。要运行telnet,您可以省略echo,但是还有其他问题。您可能会发现this answer 很有用。 我找到了解决方案,我改变了整个事情看起来像这样 (echo -en "HEAD / HTTP/1.1\n"; echo -en "Host: microsoft.com \n\n" ; 睡觉 1) | telnet microsoft.com 80 【参考方案1】:

您的脚本只是将一些内容打印到标准输出。它实际上并不执行telnet 命令。试试这样的:

telnet $1 $2 <<< $'HEAD $3 HTTP/1.0\r\n\r\n'

这将运行telnet 而不仅仅是打印命令。它还输入标准输入上的HEAD 命令。发送\r\n 行结尾而不是UNIX 的默认\n 行结尾很重要,因为\r\n 是HTTP 协议所要求的。

有关&lt;&lt;&lt; 运算符的说明,请参阅man bash

【讨论】:

它现在打开了telnet连接,但不是最终的错误消息是:“连接被外国主机关闭”。【参考方案2】:

您实际上并没有在任何地方运行 telnet 命令。您只需将其回显到屏幕上即可。

从该行删除回声。

话虽这么说也行不通,因为您不会以这种方式在脚本中获得交互式 telnet 会话。

您也许可以将输入通过管道传输到 telnet 以将其字符串发送到删除主机,但我不确定。

您可以为此使用netcat/nc 之类的东西而不是telnet(这可能是个好主意),因为它们绝对可以通过管道获取输入。

您也可以只使用为此构建的工具,例如 curl (curl -I)。

【讨论】:

以上是关于Linux脚本telnet HEAD请求[重复]的主要内容,如果未能解决你的问题,请参考以下文章

linux 批量安装telnet脚本

Linux如何通过脚本,不停地telnet一个IP,记录telnet成功的时间并输出?

在网络服务器上编写 telnet 脚本

linux12运维企业实战笔录 -- 04 telnet批量多端口

linux12运维企业实战笔录 -- 04 telnet批量多端口

HTTP系列二: 使用telnet模拟http请求