node.js - 如何使用 Node.js 将 wifi 凭据添加到 wpa_supplicant?

标签 node.js linux headless

我想将 Wifi 凭证添加到 /etc/wpa_supplicant/wpa_supplicant.conf。 (debian linux) 使用 Node.js

配置文件看起来像

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="homewifi"
    psk="homepassword"
    key_mgmt=WPA-PSK
}

我想添加另一个网络,比如

ssid="anotherwifi"
psk="anotherpsk"

<强>1。如何使用Node.js代码添加网络?

//maybe like this?
var original = exec("sudo cat wpa_supplicant.conf");
var new_network = {ssid: "anotherwifi", psk: "anotherpsk"};
exec("sudo save ? original + network?)

<强>2。是网络配置中的 key_mgmt,这是必不可少的 key 吗?如果我不知道怎么办?

(事实上,我想使用 wifi 接入点将 wifi 凭据保存到 headless (headless)物联网设备 - 用户通过网络服务器将信息发送到设备)

最佳答案

我写了一个示例代码供您引用,希望对您有所帮助。

const exec = require('child_process').exec;
const async = require('async');

const SSID = "MyWifiAP";
const PSK = "12345678";

exec('wpa_cli add_network', function(error, stdout, stderr) 
{
    if(error !== null) {
        console.log('error: ' + error);
    }
    else {
        let net_id = stdout.substr((stdout.indexOf('wlan') + 7)).trim();

        async.series([
            function(callback) {
                exec('wpa_cli set_network ' + net_id + ' ssid \'\"' + SSID + '\"\'', function(error, stdout) 
                {
                    if(error) {
                        console.error(error);                       
                    }
                    else {                      
                        console.log('SSID result: ' + stdout);
                        callback();
                    }                   
                });
            },
            function(callback) {
                exec('wpa_cli set_network ' + net_id + ' psk \'\"' + PSK + '\"\'', function(error, stdout) 
                {
                    if(error) {
                        console.error(error);                       
                    }
                    else {                      
                        console.log('PSK result: ' + stdout);
                        callback();
                    }                   
                });
            },
            function(callback) {
                exec('wpa_cli save_config', function(error, stdout) 
                {
                    if(error) {
                        console.error(error);                       
                    }
                    else {                      
                        console.log('select_network result: ' + stdout);
                        callback();
                    }                   
                });
            }
        ], function(errs, results) {
            if(errs) throw errs;    // errs = [err1, err2, err3]
            console.log('results: ' + results);   // results = [result1, result2, result3]
        });
    }
});

关于node.js - 如何使用 Node.js 将 wifi 凭据添加到 wpa_supplicant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40458023/

相关文章:

javascript - 如何动态配置 Passportjs 策略?

计算 malloc() 可以完成的最大分配后的困惑

python - 选择不适用于 python 中的管道?

c - 如何设置 fifo 权限以便可以创建文件

python - 使用 Selenium Python 客户端在不同浏览器中处理 headless (headless)模式

javascript - 快速路由问题

node.js - 如何获取具有不同值(其中其他值最低)的 (Node.js) MongoDB 文档?

node.js - 通过 api 查询 npmjs 注册表

node.js - Zombie.js 浏览器未返回完整的 html?

java - 在新选项卡中进行下载时,如何在 Selenium (Java) 中 headless (headless)下载文件?