捕获node.js中的tshark stdout输出

我试图从节点运行tshark并使用下面的代码检索stdout输出

var spawn = require('child_process').spawn, ts = spawn('tshark', ['-i wlan0 -I -R "wlan.fc.type == 0 && wlan.fc.subtype == 4" -e wlan.sa'] ); ts.stdout.on('data', function (data) { console.log('stdout: ' + data); }); ts.stderr.on('data', function (data) { console.log('stderr: ' + data); }); ts.on('exit', function (code) { console.log('child process exited with code ' + code); }); 

但是我得到一个错误

stderr:在wlan0上捕获-I -R“wlan.fc.type == 0 && wlan.fc.subtype == 4”-T fields -e wlan.sa

stderr:tshark:捕获会话无法启动(不存在此类设备)。 请检查以确保您拥有足够的权限,并且您具有指定的适当的界面或pipe道。

stderr:捕获0个数据包

如果我直接运行tshark的参数,它工作正常。

任何线索可能是错误的?

你现在调用的方式, tshark认为这些论据是一个大引用的论点,它不能正确地parsing它。 这就好像你称之为:

 tshark "-i wlan0 -I -R ""wlan.fc.type == 0 && wlan.fc.subtype == 4"" -e wlan.sa" 

你需要做的是分离出你传递给参数数组中的单个项目的参数:

 ts = spawn('tshark', ['-i', 'wlan0', '-I', '-R', 'wlan.fc.type == 0 && wlan.fc.subtype == 4', '-e', 'wlan.sa'] );