我正在使用Raspbian Wheezy,但這不是Raspberry Pi的特定問題。從腳本更改WiFi WPA2密鑰
我正在開發一個C應用程序,它允許用戶更改他們的WiFi密碼。
我沒有找到一個準備好的腳本/命令爲此,所以我試圖使用sed。
我將SSID名稱和新密鑰傳遞給bash腳本,並將密鑰替換爲* etc/wpa_supplicant/wpa_supplicant.conf。*中的該ssid塊。
我的應用程序以根用戶身份運行。
下面顯示了一個示例塊。
network={
ssid="MY_SSID"
scan_ssid=1
psk="my_ssid_psk"
}
到目前爲止,我已經試過以下(我複製的wpa_supplicant.conf到wpa.txt的嘗試):
(1)本試圖做一個範圍之間的置換,開始當我的SSID被檢測到時,結束時大括號,緊接着一個換行符。
SSID="TRIMURTI"
PSK="12345678"
sed -n "1 !H;1 h;$ {x;/ssid=\"${SSID}\"/,/}\n/ s/[[:space:]]*psk=.*\n/\n psk=\"${PSK}\"\n/p;}" wpa.txt
和
(2)本試圖「記住」的匹配的模式,並且在輸出再現它,但用新密鑰。
SSID="TRIMURTI"
PSK="12345678"
sed -n "1 !H; 1 h;$ {x;s/\(ssid=\"${SSID}\".*psk=\).*\n/\1\"${PSK}\"/p;}" wpa.txt
我已經使用保持&圖案緩衝器作爲圖案可以跨越多行。
上面,第一個例子似乎忽略了範圍&替換第一個實例,然後截斷文件的其餘部分。
第二個示例替換上次找到的psk值&此後截斷該文件。
所以我需要幫助來糾正上面的代碼,或嘗試不同的解決方案。
我猜你的代碼可能仍然有效,但爲了正確起見,將'sed -n「1!H; 1 h; $ ...'改爲'sed -n」1!H; 1 h; \ $ ...' – anishsane
'sed'在這裏存在問題,因爲您基本上不允許使用您用作正則表達式分隔符的任何字符。有辦法解決這個問題,但也許你應該考慮切換到代碼和數據不混合的工具? – tripleee
請幫忙。我正在尋找一種通過腳本更改WiFi WPA2 Passkey的方法。沒有人試過這個嗎? –