Linux脚本telnet HEAD请求

时间:2014-11-10 18:17:16

标签: linux bash telnet

所以基本上我试图做一些相当容易的事情;我试图制作一个脚本telnet到微软服务器并请求页面的HEAD。但正如预期的那样,它不起作用。如果我只是手动将它输入控制台就行了,但是当执行脚本时根本不起作用。

这是我制作的剧本:

  回声" telnet $ 1 $ 2"
  睡10年   echo" HEAD $ 3 HTTP / 1.0"
  回声
  回声
  睡2个。

在控制台中输入:

  

./ gethost microsoft.com 80 /

结果这样:

  

telnet microsoft.com 80
  HEAD / HTTP / 1.0


然后在最后两个空回声之后返回控制台,老实说,我没有得到它,我甚至增加了睡眠(可能的网络延迟)。

2 个答案:

答案 0 :(得分:1)

你的脚本只是打印一些东西到stdout。它实际上并没有执行telnet命令。尝试这样的事情:

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

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

有关man bash运算符的说明,请参阅<<<

答案 1 :(得分:0)

您实际上并未在任何地方运行 telnet命令。你只需将它回显到屏幕上。

从该行中删除回声。

据说这样做不会因为你没有以这种方式在脚本中获得交互式telnet会话。

您可以将输入传输到telnet,以便将字符串发送到删除主机,但我不确定。

你可以使用netcat / nc代替telnet这样的东西(这可能是一个好主意)因为它们肯定可以通过管道输入。

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