Este é basicamente um problema de formatação que não consegui resolver bem.
Eu quero criar uma função bash ou script que converta a saída de wpa-passphrase para um formato que possa ser usado por / etc / network / interfaces.
Exemplo de suplicante WPA
wpa_passphrase ssid password
Produz a seguinte saída
network={
ssid="MYSSID"
#psk="passphrase"
psk=ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
}
Eu preciso converter essa saída para um formato que possa ser usado por / etc / network / interfaces
Exemplo do formato de saída da interface / etc / network / interface:
auto wlan0
iface wlan0 inet dhcp
wpa-ssid MYSSID
wpa-psk ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
Minha primeira solução crua foi usar:
wpa_passphrase MYSSID PASSWORD |grep -E 'ssid|psk' |grep -v "#psk" |cut -d '=' -f 2
O que me dá:
MYSSID
ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
mas eu não sei como colocar cada uma dessas linhas em seu devido lugar no formato / etc / network / interfaces
ATUALIZAÇÃO: com a minha solução atual
Depois de mais tentativas, consegui fazê-lo funcionar com isto:
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)
Minha solução fornece a saída de que preciso, mas não parece eficiente e ainda gostaria de ver outras soluções.