如何从页面输出cli curl(7.47.0)来输出原始文本?

时间:2017-11-10 18:27:56

标签: curl

长时间读者第一次提问。所以也许我的搜索缺乏,但我似乎无法找到任何合理的帮助。

我有一个内置了小型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

非常感谢任何帮助!

2 个答案:

答案 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获取输出。