2017-06-13 38 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); 
})