通过 iwd(用于 linux 的无线守护程序)从 linux 系统上的命令行连接到 wifi

GAD*_*D3R 6 wifi iwlwifi iw iwd

iwd是英特尔和 wpasupplicant 的继任者发布的新兴的 linux 无线守护程序。iwd 的开发仍在进行中,但它已打包在一些 linux 发行版 Gentoo、Arch-linux、Ubuntu(Cosmic)和DebianBuster和 Sid)下......

网络和连接的配置可以通过交互模式使用iwctl,帮助命令将显示可用命令的列表(没有手册页)。

不使用交互模式:

  1. 如何手动配置wifi凭据?
  2. 如何通过 连接到配置的wifi iwctl
  3. 如何在启动时自动启用 wifi 连接?

GAD*_*D3R 9

1) 在非交互模式下,您可以扫描并列出可用的接入点:

iwctl station wlp8s0 scan
iwctl station wlp8s0 get-networks
Run Code Online (Sandbox Code Playgroud)

wifi 凭据存储在 下/var/lib/iwd,应使用 SSID 的确切名称,格式为:

SSID.psk 
Run Code Online (Sandbox Code Playgroud)

内容:

[Security]
PreSharedKey=encripted-password
Passphrase=the-plain-txt-password
Run Code Online (Sandbox Code Playgroud)

最小配置文件应包含加密的 wifi 密码 (PreSharedKey)

要生成加密的 psk ,您可以使用 wpa_passhrase 工具:

wpa_passhrase "My-SSID" passphrase
Run Code Online (Sandbox Code Playgroud)

有一个使用“我的 SSID”和的示例mysecretpassword

$ cat My\ SSID.psk
[Security]
PreSharedKey=8e1e64a6ecaf2b5e0aa29816547af300d7f3b0473bbfa56ddb5514ad4683804c
Run Code Online (Sandbox Code Playgroud)

2) 从终端连接:

iwctl station <INTERFACE> connect "SSID" 
Run Code Online (Sandbox Code Playgroud)

例如:

iwctl station wlp8s0 connect "My SSID"
dhclient
Run Code Online (Sandbox Code Playgroud)

dhclient 可以替换为 iproute2 命令以将 IP 地址分配给 wlp8s0。

3) 要在启动时自动启用 wifi 连接,有一种使用 systemd 服务的方法:

连接的最小脚本:

$ cat /usr/local/enable-wifi.sh

#!/bin/bash
iwctl station wlan0 connect "My SSID" 
dhclient
Run Code Online (Sandbox Code Playgroud)

创建系统服务。

$ cat /etc/systemd/system/enable-wifi.service

[Unit]
Before=network.target
Wants=network.target

[Service]
ExecStart=/usr/local/enable-wifi.sh

[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)

然后 :

# chmod 744 /usr/local/enable-wifi.sh
# chmod 664 /etc/systemd/system/enable-wifi.service
# systemctl daemon-reload
# systemctl enable enable-wifi.service
Run Code Online (Sandbox Code Playgroud)

文档:

arch-linux wiki : iwd

Debian 维基:NetworkManager/iwd

lwn: iwd:简化 WiFi 管理