ブラウザから接続しているWlanを切り替えるために別のSSIDを選択できるようにしようとしています。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"
私は2つのESSIDさんが2回リストが、私のメインている理由はわかりません問題は、これを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])
});
});
最終結果:
//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);
:また
var wlanlistarray = stdout.split("ESSID:"); res.send(wlanlistarray);
2台のルータが同じSSIDをブロードキャストするため、おそらく2回リストされます。多分リピーター。 – wtfzn
ああ、本当にありがとう、ありがとう。 – LinkM
私はここで少し混乱しています。これはnode.jsコードのように見えますが、あなたはこれをブラウザで実行していると言います。あなたは本当にこれをブラウザで実行していますか? – bhspencer