]> code.delx.au - monosys/blobdiff - wifi-scan
lib-ext-backup
[monosys] / wifi-scan
index 006a573f725e157cb2dd3964901402d5dd39629f..344581ad5809ff0ed65ed91a0dd3d02dfc1b75e3 100755 (executable)
--- a/wifi-scan
+++ b/wifi-scan
@@ -1,4 +1,5 @@
 #!/usr/bin/env node
+'use strict'
 
 const {exec} = require('child_process');
 
@@ -27,8 +28,8 @@ async function findInterface() {
     return lines[0];
 }
 
-async function scanInterface(interface) {
-    const {stdout} = await execAsync(`sudo iw dev ${interface} scan`);
+async function scanInterface(iface) {
+    const {stdout} = await execAsync(`sudo iw dev ${iface} scan`);
 
     const results = [];
     let partial = null;
@@ -50,6 +51,9 @@ async function scanInterface(interface) {
         if (line.startsWith('DS Parameter set: channel')) {
             partial.channel = line.split(':')[1].trim();
         }
+        if (line.startsWith('freq: ')) {
+            partial.freq = 'freq ' + line.split(':')[1].trim();
+        }
     }
 
     function finishPartial() {
@@ -58,7 +62,7 @@ async function scanInterface(interface) {
         }
 
         partial.ssid = partial.ssid || '';
-        partial.channel = partial.channel || '';
+        partial.channel = partial.channel || partial.freq || '';
 
         const sortKey = [
             parseFloat(partial.signal),
@@ -70,7 +74,7 @@ async function scanInterface(interface) {
 
     return results
         .sort()
-        .map(([_, {bssid, ssid, signal, channel}]) => {
+        .map(([, {bssid, ssid, signal, channel}]) => {
             ssid = ssid.padStart(40, ' ');
             channel = channel.padEnd(10, ' ');
             return `${signal}  ${channel}  ${ssid}  ${bssid}`;
@@ -79,11 +83,11 @@ async function scanInterface(interface) {
 }
 
 async function main() {
-    const interface = await findInterface();
+    const iface = await findInterface();
 
     for (;;) {
-        const scanResult = await scanInterface(interface).catch((err) => err.toString());
-        process.stdout.write('\033[2J\033[0f');
+        const scanResult = await scanInterface(iface).catch((err) => err.toString());
+        process.stdout.write('\x1b[2J\x1b[0f');
         process.stdout.write(scanResult);
         await sleep(3000);
     }