Я пытаюсь выбрать различные SSID для переключения Wlan, с которым вы подключены, из браузера.Преобразовать список SSID в JSON/Array
var sys = require('sys');
var exec = require('child_process').exec;
app.get(prefix + '/wlan', function(req, res){
child = exec("iwlist wlan0 scan | grep ESSID", function(error, stdout, stderr){
if(error !== null){
console.log('Exec error ' + error);
}
else {
res.send(stdout);
}
});
});
Это мой код до сих пор, чтобы получить список SSID ..
Выход такова:
ESSID:"WLAN-GUEST" ESSID:"WLAN1" ESSID:"WLAN-GUEST" ESSID:"WLAN1" ESSID:"WLAN2"
Я понятия не имею, почему два ESSID, перечислены в два раза, но моя главная вопрос в том, как я могу разобрать это на JSON или как я могу получить доступ к каждой записи, например массиву (wlanlist [0])?
Редактировать: Я попытался установить stdout.replace ("", ","); и JSON.parse, но поскольку он асинхронен, он отправляется без изменений. (Не уверен, если это будет работать синхронно)
Edit2: Попытка получить доступ к данным, как, что:
$(document).ready(function() {
$.get(prefix + '/wlan', function(wlanlist){
document.getElementById("wlanoptions").options[0] = new Option("Select your WLAN:","");
document.getElementById("wlanoptions").options[1] = new Option(wlanlist[0],wlanlist[0])
});
});
Конечный результат:
var wlanlistarray = stdout.split("ESSID:"); res.send(wlanlistarray);
Дополнительно:
//extract ssid and remove quotes
var wlanlist = new Array;
var step1 = stdout.split("ESSID:");
for(i = 1; i < step1.length; i++){
var arr = new Array;
arr = step1[i].split('"');
//if exists in array -> continue; else create new entry in wlanlist
if(wlanlist.indexOf(arr[1]) === -1){wlanlist.push(arr[1]);}
else{continue;}
}
res.send(wlanlist);
Вероятно, они перечислены дважды, потому что два маршрутизатора передают один и тот же SSID. Может быть, ретранслятор. – wtfzn
Ах да, это может быть правдой, спасибо. – LinkM
Я немного смущен здесь. Это похоже на код node.js, но вы говорите, что используете его в браузере. Вы действительно используете это в браузере? – bhspencer