我无法从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。
答案 0 :(得分:0)
如果您像这样分开参数,它对我有用。
const {spawn} = require('child_process');
spawn('tcpdump', ['-w', '-']).stdout.on('data', (data) => console.log(data.toString()))