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 协议所要求的。
有关<<<
运算符的说明,请参阅man bash
。
【讨论】:
它现在打开了telnet连接,但不是最终的错误消息是:“连接被外国主机关闭”。【参考方案2】:您实际上并没有在任何地方运行 telnet 命令。您只需将其回显到屏幕上即可。
从该行删除回声。
话虽这么说也行不通,因为您不会以这种方式在脚本中获得交互式 telnet 会话。
您也许可以将输入通过管道传输到 telnet
以将其字符串发送到删除主机,但我不确定。
您可以为此使用netcat
/nc
之类的东西而不是telnet
(这可能是个好主意),因为它们绝对可以通过管道获取输入。
您也可以只使用为此构建的工具,例如 curl
(curl -I
)。
【讨论】:
以上是关于Linux脚本telnet HEAD请求[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Linux如何通过脚本,不停地telnet一个IP,记录telnet成功的时间并输出?
linux12运维企业实战笔录 -- 04 telnet批量多端口