我正在尝试使用 bash 脚本连接到 WPA2 网络。通常的方法是这样的:
wpa_passphrase SSID PASSWORD > CONFIG_FILE
wpa_supplicant -B -iwlan0 -cCONFIG_FILE -Dwext
但是,我不希望密码保留在文件中。是否有类似的方法来配置 WPA2 网络而不使用配置文件(即使只是临时的),类似于如何使用单个命令配置开放和 WEP 网络,iwconfig wlan0 essid SSID key s:PASSWORD
?
从我的评论中已经暗示的想法开始,我想提供一个答案。
wpa_supplicant
答案经过测试,可在使用(版本 v2.6)wpa_passphrase
、GNUbash
(版本 4.4.23)和 linux 4.18组合的特定情况下工作。我希望这里提供的解决方案是为了避免一些剩余的密码短语文件可以以更通用的 posix 方式采用,但是我只测试了我的 arch linux 设置可用于试验。
我跑了
与我的wifi网络的实际参数。并且建立了联系。还浏览我发现这个的stace:
这应该是如何处理过程替换( the
command <(other command)
)的事情。可以看出 wpa_supplicant 访问了管道 at/dev/fd/63
并读取了配置,然后进一步关闭,关闭 fd 后3
,file-descripter 直接重用于打开 asocket
。我通过双重检查
ls -ialh /proc/<pid of wpa_supplicant>/3
并报告:571637 lrwx------ 1 root root 64 Aug 23 20:49 3 -> 'socket:[571092]'
这意味着密码的唯一临时可访问性(通过/dev/fd/53
打开为 fd的 fifo3
确实已关闭,现在仍然是正确socket
的strace
通知。Arch
wpa_supplicant
linux wiki ( https://wiki.archlinux.org/index.php/WPA%20supplicant )我还想指出显而易见的。由于您在 shell 中输入了密码,因此请确保它不会记录在 shell 历史记录中,因此请执行以下操作:
(如此处所述https://unix.stackexchange.com/a/10923/24394)