0

我的 conf 文件如下所示:

ssid="oldssid"
psk="oldpassword"

我正在使用以下代码尝试在 Node JS 应用程序中编辑我的 Wifi 设置,但它没有对文件进行任何更改。任何建议将不胜感激!

        var ssid_command = "sed -i \'s/ssid=\"oldssid\"/ssid=\"" + newssid + "\"/\' /etc/wpa_supplicant/wpa_supplicant.conf";
        var psk_command = "sed -i \'s/psk=\"oldpassword\"/psk=\"" + newpassword + "\"/\' /etc/wpa_supplicant/wpa_supplicant.conf";
        require('child_process').exec(ssid_command, function (msg) { console.log(msg) });
        require('child_process').exec(psk_command, function (msg) { console.log(msg) });
4

2 回答 2

0

如果您的 conf 文件的内容看起来像这样......

ssid=oldssid
psk=oldpassword

...然后您生成的...的shell命令

sed -i 's/ssid="oldssid"/ssid="newssid"/' wpa_supplicant.conf

...引用的级别太多了。

单引号内的所有内容都被 shell 视为一个不间断的、未解析的字符串,并照此传递给 sed。Sed 将引号视为要匹配和替换的普通字符 - 因此oldssid寻找周围的标记,并且可能找不到,因为它们不存在于文件中。

你想生成更像这样的东西:

sed -i 's/ssid=oldssid/ssid=newssid/' wpa_supplicant.conf

......你可以这样做......

var command = "sed -i 's/ssid=oldssid/ssid=" + newssid + "/' wpa_supplicant.conf";

PS您也不需要在javascript中转义双引号字符串中的单引号-尽管这样做不会破坏任何东西

于 2020-12-05T07:56:45.817 回答
0

原来我所要做的就是添加sudo到开头,以便我有权编辑文件。

于 2020-12-06T04:33:43.920 回答