如何使用 sed 在 Node JS 中的 Raspberry Pi 上编辑 wpa_supplicant.conf?
How do you edit wpa_supplicant.conf on a Raspberry Pi in Node JS with sed?
我的配置文件如下所示:
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) });
如果你的 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 中双引号字符串中的单引号 - 虽然这样做不会破坏任何东西
原来我所要做的就是在开头添加 sudo
这样我就有了编辑文件的权限。
我的配置文件如下所示:
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) });
如果你的 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 中双引号字符串中的单引号 - 虽然这样做不会破坏任何东西
原来我所要做的就是在开头添加 sudo
这样我就有了编辑文件的权限。