【发布时间】:2019-09-10 14:22:41
【问题描述】:
我正在使用 Wireshark 的 Tshark cmd 工具来捕获一些网络数据包并对其进行分析。为了生成工作环境,您只需要 Wireshark 3+ 和 NodeJS 9+。我正在使用以下代码在某个时间切断 Tshark 流(setTimeout 用于模拟用户同时单击停止按钮)
var spawn = require('child_process').spawn,
ts = spawn('tshark', ['-i', 'Wi-Fi', '-T', 'json']);
function analyzePacket(packet) {
console.log(packet.toString());
}
ts.stdout.on('data', function (packet) {
analyzePacket(packet)
});
setTimeout(function(){ ts.kill(); }, 5000);
这很好用,但是当调用ts.kill(); 时,将数据包信息写入屏幕会在中间中断。我希望 tshark 完全输出在单击停止按钮(触发 ts.kill())之前捕获的最后一个数据包。据我所知,我尝试发送不同类型的信号,这些信号在杀伤力上有所不同。那就是:
ts.kill('SIGINT');
ts.kill('SIGHUP');
ts.kill('SIGKILL');
它们似乎都没有工作。这是完全实现最终数据包然后优雅关闭的最佳方式。
【问题讨论】:
标签: node.js process wireshark tshark