これはほとんど私がよく理解していない形式の問題です。
wpa-passphraseの出力を/etc/network/interfacesが使用できる形式に変換するbash関数やスクリプトを作成したいと思います。
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)
私のソリューションは必要な出力を提供しますが、効率的ではないようで、まだ他のソリューションを見たいです。
ベストアンサー1
次の関数を作成し、それを使用して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