获取node.js中的wpa_supplicant接口列表

我最终的目标是创build一个模块,告诉我为什么设置无线连接失败。

目前我正尝试使用node-dbus模块访问wlan0接口。 现在wpa_supplicant告诉我,它不知道wlan0

'wpa_supplicant对这个接口一无所知。

任何帮助或build议,不胜感激。

码:

var dbus = require('dbus-native'); var util = require('util'); var bus = dbus.systemBus(); var wpas = bus.getService('fi.w1.wpa_supplicant1'); var wpai = wpas.getInterface('/fi/w1/wpa_supplicant1' , 'fi.w1.wpa_supplicant1', function (err, iface) { //console.log(err, iface); iface.on('PropertiesChanged', function(dict) { console.log('interface properties have changed!'); console.log(dict); }); iface.on('InterfaceAdded', function(path, dict) { console.log('interface has been added!'); console.log(path, dict); }); iface.on('InterfaceRemoved', function(path) { console.log('interface has been removed!'); console.log(path); }); iface.GetInterface('wlan0', function (err, iface2) { console.log(err, iface2); }); console.log(util.inspect(iface, true, 3)); }); 

更新1:

我使用DBus属性api来调查Interfaces属性,并发现属性本身为null。

 wpas.getInterface('/fi/w1/wpa_supplicant1', 'org.freedesktop.DBus.Properties', function(err, device) { device.GetAll('fi.w1.wpa_supplicant1', function(err, prop) { var props = arrToMap(prop); console.log(err,props); }); }); function arrToMap(arr) { var output = {}; for (var i = 0; i < arr.length; i++) { output[arr[i][0]] = arr[i][1][1][0]; } return output; } 

我唯一的结论是,wpa_supplicant不会在dbus上注册任何新的接口。

(我已经确保使用wpa_supplicant使用terminal命令来设置我的wlan0)

我设法通过使用承诺重写上面的代码来解决我的问题。 上面的GetInterface只返回wpa_supplicant适配器也很重要。

需要使用GetInterface对该对象进行额外的调用才能获得实际的wlan0接口。

如果有人遇到错误“wpa_supplicant can not grab this interface”,请尝试删除wlan0文件:/ run / wpa_supplicant / wlan0(如果有的话)