Linux 使用 iw, wpa_supplicant, dhcpcd 连接 WiFi

连接 WiFi 的基本步骤:

  • 打开网卡
  • 扫描附近 WiFi
  • 连接 WiFi
    • 生成帐号密码文件
    • 连接
  • 分配网址(当然这里是自动分配)

如何打开网卡?

ip link set wlan0 up

在这里插入图片描述
如图所示:如果要打开网卡 wlan0,则使用上面的命令,其它类似。

如何扫描附近 WiFi?

iw dev wlan0 scan |grep SSID

Linux 使用 iw, wpa_supplicant, dhcpcd 连接 WiFi_第1张图片
如图所示:根据上面的命令,找到对应的你想要连接的 WiFi 的SSID。

如何连接 WiFi?

  • 生成帐号密码文件。(如果你有强迫症,可以放在一个特定的文件夹,根据自己的需要
wpa_passphrase wlan0 123456 > /root/wlan0.conf

其中的wlan0是你使用的网卡,123456则是密码,后面的是把文件放在哪里。

  • 连接
wpa_supplicant -c /root/wlan0.conf -i wlan0

*相信上面的命令容易理解

自动分配网址

dhcpcd wlan0

最终效果如下:

Linux 使用 iw, wpa_supplicant, dhcpcd 连接 WiFi_第2张图片

代码如下:

#!/usr/bin/bash

# By archicu
# Version 3.0
# connect wifi by wpa_supplicant

wlst=`ip link |grep 'wlan0' |awk '{print $3}' |awk -F"," '{print $3}'`
# set wlan0 up
if [[ ! $wlst = "UP" ]]; then
	ip link set wlan0 up
	if [ $? -eq 0 ]; then
		echo -e "\e[1;36mwlan0 up...\e[0m"
	else
		exit 0;
	fi
fi

echo -e "\e[1;36mThe wifi you connected: \e[0m"
sum=0
for ifile in `ls /root/*.conf`
do
	ifile=$(basename $ifile |awk -F"." '{print $1}')
	wifi_connect[$sum]=$ifile
	echo -e "\e[1;36m$sum : $ifile\e[0m"
	let sum++
done
echo

echo -e "\e[1;36mDo you want a\e[0m \e[1;32mNEW\e[0m\e[1;36m wifi?\e[0m"
read -p "[yes/no]: " choose

if [ $choose == "no" ]; then
	read -p "Choose wifi: " wilan
	wpa_supplicant -c /root/${wifi_connect[$wilan]}.conf -iwlan0 &
else
	echo -e "\e[1;36mScanning wifi devices...\e[0m"
	wait
	iw dev wlan0 scan |grep SSID
	read -p "Device: " widev
	read -p "Passwd: " wipas
	wpa_passphrase $widev $wipas > /root/$widev.conf
	wpa_supplicant -c /root/$widev.conf -iwlan0 &
fi
sleep 3s

dhcpcd wlan0 &
sleep 9s

注意:这些命令都是 root 用户下

你可能感兴趣的:(Arch,Linux)