Estou tentando me conectar a uma rede WPA2 com um script bash. A abordagem usual é algo nesse sentido:
wpa_passphrase SSID PASSWORD > CONFIG_FILE
wpa_supplicant -B -iwlan0 -cCONFIG_FILE -Dwext
No entanto, não quero que a senha persista em um arquivo. Existe uma abordagem semelhante para configurar uma rede WPA2 sem usar um arquivo de configuração (mesmo que apenas temporário), semelhante a como as redes abertas e WEP podem ser configuradas com um único comando iwconfig wlan0 essid SSID key s:PASSWORD
?
Começando com as idéias já sugeridas em meu comentário, gostaria de oferecer uma resposta. A resposta é testada para funcionar no caso específico de usar uma combinação de
wpa_supplicant
(versão v2.6),wpa_passphrase
, GNUbash
(versão 4.4.23) e linux 4.18.Espero que a solução oferecida aqui, com o objetivo de evitar que algum arquivo de senha restante seja adotável de uma maneira posix mais geral, no entanto, testei apenas minha configuração do arch linux disponível para experimentação.
eu corri
com os parâmetros reais da minha rede wifi. E a conexão foi estabelecida. Também navegando na stace, encontro isso:
o que deve ser como a
command <(other command)
coisa de substituição do processo funcionou. Pode-se ver que wpa_supplicant acessou o pipe em/dev/fd/63
e leu a configuração, e depois o fechou ainda mais, após fechar o fd3
, o descritor de arquivo está reutilizando diretamente para abrir um arquivosocket
.Eu verifiquei duas vezes
ls -ialh /proc/<pid of wpa_supplicant>/3
e ele relata:571637 lrwx------ 1 root root 64 Aug 23 20:49 3 -> 'socket:[571092]'
o que significa que a única acessibilidade temporária da senha (via fifo em open/dev/fd/53
as fd3
foi de fato fechada e agora ainda ésocket
ostrace
informado corretamente.Parece também que as informações sobre essa maneira de criar uma linha de comando "less-file" "sem arquivo" para
wpa_supplicant
é discutida no wiki do arch linux ( https://wiki.archlinux.org/index.php/WPA%20supplicant )Eu também quero apontar o óbvio. Como você insere a senha no shell, certifique-se de que ela não será gravada no histórico do shell, portanto, faça algo semelhante a:
(conforme estabelecido aqui https://unix.stackexchange.com/a/10923/24394 )