2017-06-13 34 views
0

我想记录一些数据,从指令流中:记录数据流从卷曲到文本文件

curl https://api.particle.io/v1/devices/events?access_token=blahblahtoken

这curl命令会听粒子的云打印出我发送任何消息或者在我的微粒设备之间接收到终端。我想将输出保存到一个文本文件。

我已经试过:

  • 卷曲网址> output.txt的
  • 卷曲链接>> output.txt的
  • 卷曲网址-o output.txt的

没有奏效,在Mac或Linux上。文件被创建(或截断(如果适用)),但即使重复的终端窗口正在从curl命令打印输出,也不会写入文件。

我唯一的猜测是,curl命令将无限期持续,直到我Ctrl + C出来,也许退出这种方式防止被记录到文件输出?数据输入时如何将输出记录到文件中?

+0

我要推荐'的telnet api.particle.io 80'然后 GET/V1 /设备/事件=的access_token blahblahtoken ?主持人:api.particle.io 但后来我发现它的HTTPS,这样就不会去上班。 – Cuagau

回答

1

我一直与卷曲了近十年了,我不知道有什么办法让它流数据这样的命令行。您可以在C API中使用CURLOPT_WRITEFUNCTION,但我怀疑您想编写自己的C模块。我扫描了手册页,并且找不到CLI中可用的类似选项。我不认为cURL命令行提供了一个选项来执行你所需要的。正如您怀疑的那样,它会一直等到输出前收到整个页面(这通常是页面被压缩时所必需的)。

+0

卷曲是新的给我,但我已经用c够舒服带写我自己的模块,如果它能够完成任务。我给它一个去当我回家,在那里你会建议寻找到熟悉的CURLOPT_WRITEFUNCTION任何具体的例子? – cjameston

0

我碰到这个问题也来了希望从卷曲记录的粒子事件流。由于curl无法做到这一点,我写了一个快速的节点脚本,做我所需要的。把它放在这里是为了对其他人有帮助。需要注意的是,“事件监听”的需求相匹配的事件串,​​你的粒子发射(在这种情况下,“currentTime的”):

#!/usr/bin/env node 

var EventSource = require('eventsource'); 
var fs = require('fs'); 

var URL = 'https://api.particle.io/v1/products/power-monitor-v001/events?access_token=XXXXXXXX'; 

var es = new EventSource(URL); 
es.addEventListener('currentTime', function (e) { 
    console.log(e.data) 
    fs.appendFileSync('test.json', e.data); 
})