我正在尝试从节点运行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:无法启动捕获会话(不存在此类设备)。 请检查以确保您具有足够的权限,并且您已指定正确的接口或管道。
stderr:捕获0个数据包
如果我直接使用参数运行tshark就可以了。
任何可能出错的线索?
答案 0 :(得分:2)
现在调用spawn
的方式,tshark
将参数视为一个大的引用参数,并且无法正确解析它。就像你打电话一样:
tshark "-i wlan0 -I -R ""wlan.fc.type == 0 && wlan.fc.subtype == 4"" -e wlan.sa"
您需要做的是将您传递给spawn
的参数分离到arguments数组中的各个项目中:
ts = spawn('tshark',
['-i', 'wlan0', '-I', '-R', 'wlan.fc.type == 0 && wlan.fc.subtype == 4', '-e', 'wlan.sa']
);