Shell-Script
將 WPA_passphrase 輸出轉換為 /etc/network/interface
這主要是我無法很好解決的格式問題。
我想創建一個 bash 函式或腳本,將 wpa-passphrase 的輸出轉換為 /etc/network/interfaces 可以使用的格式。
範例 WPA 請求者
wpa_passphrase ssid password
產生以下輸出
network={ ssid="MYSSID" #psk="passphrase" psk=ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b }
我需要將該輸出轉換為 /etc/network/interfaces 可以使用的格式
/etc/network/interface 輸出格式範例:
auto wlan0 iface wlan0 inet dhcp wpa-ssid MYSSID wpa-psk ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
我的第一個粗略解決方案是使用:
wpa_passphrase MYSSID PASSWORD |grep -E 'ssid|psk' |grep -v "#psk" |cut -d '=' -f 2
這給了我:
MYSSID ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
但我不知道如何將這些行中的每一行放到 /etc/network/interfaces 格式中的正確位置
更新:使用我目前的解決方案
經過進一步的嘗試,我設法讓它與這個一起工作:
while read line do echo "auto wlp3s0" echo "iface wlp3s0 inet dhcp" echo -e "\t wpa-ssid $line" done < <(sudo wpa_passphrase $1 $2 |grep -E 'ssid' |cut -d '=' -f 2) while read line do echo -e "\t wpa-psk $line" done < <(sudo wpa_passphrase $1 $2 |grep -E 'psk' |grep -v "#psk" |cut -d '=' -f 2)
我的解決方案提供了我需要的輸出,但它似乎效率不高,我仍然希望看到其他解決方案。
您可以製作如下函式並根據
awk
需要使用格式化輸出:generate() { sudo wpa_passphrase "$1" "$2" | awk -F= 'BEGIN { print "auto wlan0\n" "iface wlan0 inet dhcp" } /ssid/ { print "", "wpa-ssid", $2 } /[^#]psk=/ { print "", "wpa-psk" , $2 }' OFS='\t' }
然後呼叫
generate "my SSID" "PASSWORD"
。輸出將是:
auto wlan0 iface wlan0 inet dhcp wpa-ssid "my SSID" wpa-psk ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b