NodeJS:无法使用 child_process.spawn 从 tcpdump 读取二进制数据
NodeJS: Can't read binary data from tcpdump using child_process.spawn
我无法在 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
并将第一个的标准输出附加到它,数据将传递给第二个 tcpdump
。但是 stdout 数据侦听器从未被调用并调用 stdout.read
returns null.
注意:
我知道 pcap、pcap2 和 pcap-master,但它们似乎不再维护,也没有使用最新版本的 node 进行编译,无论如何我宁愿使用 tcpdump。
如果你像这样分开参数,它对我有用。
const {spawn} = require('child_process');
spawn('tcpdump', ['-w', '-']).stdout.on('data', (data) => console.log(data.toString()))
我无法在 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
并将第一个的标准输出附加到它,数据将传递给第二个 tcpdump
。但是 stdout 数据侦听器从未被调用并调用 stdout.read
returns null.
注意: 我知道 pcap、pcap2 和 pcap-master,但它们似乎不再维护,也没有使用最新版本的 node 进行编译,无论如何我宁愿使用 tcpdump。
如果你像这样分开参数,它对我有用。
const {spawn} = require('child_process');
spawn('tcpdump', ['-w', '-']).stdout.on('data', (data) => console.log(data.toString()))