在node.js中捕获tsark stdout输出
Capture tshark stdout output in node.js
我正在尝试从节点运行tsark,并使用以下代码检索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字段-e wlan.sa
stderr:tshark:无法启动捕获会话(不存在此类设备)。请检查以确保您有足够的权限,并且指定了正确的接口或管道。
stderr:捕获了0个数据包
如果我直接带着论点跑tshark,效果很好。
有什么可能出错的线索吗?
按照您现在调用spawn
的方式,tshark
将参数视为一个大引号参数,并且无法正确解析。就好像你这样称呼它:
tshark "-i wlan0 -I -R ""wlan.fc.type == 0 && wlan.fc.subtype == 4"" -e wlan.sa"
您需要做的是将传递给spawn
的参数分离为参数数组中的各个项:
ts = spawn('tshark',
['-i', 'wlan0', '-I', '-R', 'wlan.fc.type == 0 && wlan.fc.subtype == 4', '-e', 'wlan.sa']
);
相关文章:
- 派生进程的stdout在管道传输时工作异常
- 如何同步写入process.stdout
- 管道订购问题?将stdin管道化为http请求,并将结果管道化为stdout
- stdout/stderror 不是 ssh-promise 库中承诺履行的一部分吗?
- 控制台.log 以 STDOUT on GULP 事件
- 如何基于 stdout 和 stderr 验证来自 nodejs 的 angular post 调用
- stdout write with Nodejs
- Gulp调试-管道到进程.stdout给出TypeError('无效数据')
- Gnome外壳扩展:来自GLib.IOChannel的stdout
- 节点4.2.0 phantom stdout:NETWORK_ERR:XMLHttpRequest异常101:同步请求中
- 如何使用node.js查看phantomjs子进程的stdout
- 如何在处理ruby脚本stdout时,逐行将其发送到rails 3.1中的iframe
- 在node.js中捕获tsark stdout输出
- 管道化node.js脚本's stdout到另一个's stdin没有'不起作用
- 如何在node.js脚本中获得有关stdout重定向文件名的信息
- 从gjs读取异步stdout
- system.stdout和system.stdin在casperjs中未定义
- 为什么使用child_process时输出来自STDERR而不是STDOUT ?执行为Node.js
- Nodejs:挑战从STDIN读取add(2)(3)和add(2,3),并在STDOUT上返回总和
- 我可以实时检查NodeJS中的stdout