NodeJS:无法使用child_process.spawn从tcpdump读取二进制数据

时间:2018-04-09 20:56:31

标签: node.js child-process tcpdump

我无法从NodeJS中的tcpdump -w -读取二进制数据。

const {spawn} = require('child_process');
spawn('tcpdump', ['-w -']).stdout.on('data', (data) => console.log(data.toString()))

它适用于文本数据(不含-w -)。

我尝试过-U并验证我的机器上的libpcap导出pcap_dump_flush。我可以看到strace tcpdump确实在输出数据。如果我用-r生成另一个tcpdump并将第一个的stdout附加到它,则数据将传递给第二个tcpdump。但是从不调用stdout数据监听器,并且调用stdout.read返回null。

注意: 我知道pcap,pcap2和pcap-master,但它们似乎不再被维护,并且没有使用最新版本的节点进行编译,我宁愿使用tcpdump。

1 个答案:

答案 0 :(得分:0)

如果您像这样分开参数,它对我有用。

const {spawn} = require('child_process');
spawn('tcpdump', ['-w', '-']).stdout.on('data', (data) => console.log(data.toString()))