长时间读者第一次提问。所以也许我的搜索缺乏,但我似乎无法找到任何合理的帮助。
我有一个内置了小型Web服务器的IoT设备。如果我转到页面http://x.x.x.x/temp,它将以纯文本显示温度和湿度。我怀疑这个返回只是没有HTML的原始无格式文本,现代浏览器添加了一些所需的html来自己显示结果。我相信这是因为如果我查看页面的来源只有文本,但如果我实际检查页面,我会看到一些HTML。我想最终获取这些数据并使用perl脚本中的curl将其转储到我的数据库中。我决定先确保我可以从cll上获得我想要的结果。问题是curl什么都没回来。我也尝试过wget也没什么。卷曲-v显示没有回报。 Curl --trace-ascii - 显示我正在寻找的响应,如果必须的话,我可以处理它,但我仍然想知道如何使它像我期望的那样转储它收到的内容。而不必解析/ grep从trace-ascii返回的所有内容。
页面的浏览器输出: Browser grab
CLI输出:
~$ curl http://192.168.11.7/temp -v
* Trying 192.168.11.7...
* Connected to 192.168.11.7 (192.168.11.7) port 80 (#0)
> GET /temp HTTP/1.1
> Host: 192.168.11.7
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Connection: close
< Access-Control-Allow-Origin: *
<
* Closing connection 0
卷曲--trace-ascii:
~$ curl http://192.168.11.7/temp --trace-ascii -
== Info: Trying 192.168.11.7...
== Info: Connected to 192.168.11.7 (192.168.11.7) port 80 (#0)
=> Send header, 80 bytes (0x50)
0000: GET /temp HTTP/1.1
0014: Host: 192.168.11.7
0028: User-Agent: curl/7.47.0
0041: Accept: */*
004e:
<= Recv header, 17 bytes (0x11)
0000: HTTP/1.1 200 OK
<= Recv header, 25 bytes (0x19)
0000: Content-Type: text/html
<= Recv header, 19 bytes (0x13)
0000: Connection: close
<= Recv header, 32 bytes (0x20)
0000: Access-Control-Allow-Origin: *
<= Recv header, 2 bytes (0x2)
0000:
<= Recv data, 21 bytes (0x15)
0000: DHT22,.80.60.,.64.30. <----- Output I would expect
== Info: Closing connection 0
非常感谢任何帮助!
答案 0 :(得分:0)
试试这个:
curl -iH "Accept: text/plain" http://192.168.11.7/temp
如果那不是&#39;工作尝试使用netcat nc
:
echo -en "GET /temp HTTP/1.0\n\n\n" | nc 192.168.11.7 80
如果使用HTTP / 1.1,则需要主机:
echo -en "GET /temp HTTP/1.1\nHost: 192.168.11.7\n\n" | nc 192.168.11.7 80
答案 1 :(得分:0)
所以看起来设备的返回包括一些^ M回车。这显然让一些Linux程序感到困惑,可能是因为这是一个Windows行结束。我已经联系了该设备的开发人员,希望这将在未来的升级中得到解决。有一个更新的固件,我将试图看看它是否解决了这个问题。在那之前,我想我只需要通过--trace-ascii获取输出。