linux wifi相关命令
AP端:
STA端:
1.ip addr 查看是否連接,也可查看網(wǎng)卡是否啟動和網(wǎng)卡名
2.將wifi名和密碼寫入配置
wpa_passphrase wifi名 wifi密碼 >> /etc/wpa_supplicant/wpa_supplicant.conf
3.加載配置文件
wpa_supplicant -i 網(wǎng)卡名 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
4.自動分配ip地址,并檢驗是否成功分配到ip
dhclient 網(wǎng)卡名
ip addr
ps -aux | grep wpa
$ wpa_cli -i wlan1 scan // 搜索附近wifi網(wǎng)絡(luò)
$ wpa_cli -i wlan1 scan_result // 打印搜索wifi網(wǎng)絡(luò)結(jié)果
$ wpa_cli -i wlan1 add_network // 添加一個網(wǎng)絡(luò)連接
$ wpa_cli -i wlan1 set_network 0 ssid '"name"'
$ wpa_cli -i wlan1 set_network 0 psk '"password"'
$ wpa_cli -i wlan1 enable_network 0
$ wpa_cli -i wlan1 set_network 0 ssid '"name"'
$ wpa_cli -i wlan1 set_network 0 key_mgmt NONE
$ wpa_cli -i wlan1 set_network 0 wep_key0 '"password"'
$ wpa_cli -i wlan1 enable_network 0
wpa_cli -iwlan1 save_config
/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=2
update_config=1
country=NL
bss_expiration_age=250
network={
ssid="xxxxxxxxxxx"
psk="xxxxxxxxxxx"
priority=4
disabled=1
}
連接:nmcli device wifi connect wifiname password wifipasswd
刪除:nmcli con del wifiname
啟動:nmcli connection up wifiname
關(guān)閉:nmcli connection down wifiname
nmcli c modify "NAME" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "PASSWORD" 啟動wifi:nmcli c up "NAME" 關(guān)閉wifi:nmcli c down "NAME"
linux wifi功能的實現(xiàn)
一、嵌入式linux四件套配置
1、網(wǎng)卡選型的依據(jù):
a.網(wǎng)卡不能亂選,否則沒戲。網(wǎng)卡的依據(jù)是,kernel的menuconfig -> device drivers -> network device support -> wireless lan ->一堆驅(qū)動,however,這還沒有結(jié)束;
b.buildroot -> menuconfig -> target packet -> hardware handling -> *** firmwares -> linux-firmware -> wifi firmwares ->一堆驅(qū)動的bin。
#這些網(wǎng)卡商都十分淫蕩,在官網(wǎng)上放著10年前的固件,但是卻給這些軟件巨頭發(fā)放最新的驅(qū)動,而且還不開源,嗞嗞。。
#接下來是開啟一些功能
2、開啟內(nèi)核rfkill功能
menuconfig -> networking support -> rf switch subsystem support
3、開啟kernel和buildroot的驅(qū)動支持
a、就是第一步的那兩個地方,然后:
b、Networking support -> Networking options ->
<*> Packet socket
[*] NETLINK: mmapped IO
[*] IP: DHCP support
[*] IP: BOOTP support
[*] IP: RARP support
[*] Network packet filtering (replaces ipchains) //添加,后面子選項可不選,配置CONFIG_NETFILTER
4、buildroot軟件包設(shè)置
buildroot -> menuconfig -> target packet -> network applications
選擇hostapd,iw,wireless tools,wpa_supplicant(注意全選)
5、然而還沒有結(jié)束
buildroot -> busybox-menuconfig -> networking utilities -> udhcpd, udhcpc
嗯,telnet困難癥的朋友,你們現(xiàn)在可以脫離苦海了,把telnetd也選上去吧
#這個時候,應(yīng)該就能順利啟動網(wǎng)卡了,需要驗證一下/sys/class/net/wlan0里面有沒有phy80211這個東西,如果沒有,說明驅(qū)動安裝失敗。
#如果是網(wǎng)上找到的開源驅(qū)動,并且你不需要開AP,那么即使沒有phy80211也能夠上網(wǎng),詳見附一
#如果你的網(wǎng)卡是usb的,而且比較水,那么網(wǎng)卡有時候會死機,這個時候你怎么搞,它都不會再鳥你了,這個時候,嗯,抽出來,再插進去 = =..
二、應(yīng)用程序配置(client篇)
1、ifconfig wlan0 up
2、情況一:要連接的AP沒有密碼
iw dev wlan0 connect "Guest hi-T"
udhcpc -i wlan0
#然后可以用ping了
#經(jīng)過使用,Guest的信號還是不錯的,丟包率只有10%上下,udhcpc找ip的速度也是非常快的。
3、情況二:要連接的AP使用WPA加密
需要使用wpa_supplicant
a、創(chuàng)建文件/etc/wpa_supplicant.conf,如果是在buildroot把這個包打上去的,那么應(yīng)該本來就有這個文件;
b、編輯文件:/etc/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_
ap_scan=1 //必須要這一句,這是導(dǎo)演安排滴
network={
ssid="zhd-1" #這是AP的名字
psk="123456789" #這是AP的密碼
}
保存退出。
c、wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant
-D表示驅(qū)動程序;-i表示網(wǎng)卡; -c表示配置文件
如果看到CTRL-EVENT-CONNECTED的debug輸出,證明配置是對的。
如果看到pre-shared key maybe incorrect,并且持續(xù)不斷出現(xiàn),表示密碼可能是錯的。
如果看到其他的信息,有可能是配置文件不完整,甚至是驅(qū)動程序本身也是不完整的。
d、CTRL-EVENT-CONNECTED之后一段時間內(nèi),如果沒有任何輸出,證明連接穩(wěn)定,可以進行下一步:
wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant -B,讓wpa_supplicant常駐在后臺,控制網(wǎng)卡
處于client模式;
e、udhcpc -i wlan0, 獲取ip
f、用完后,wpa_cli -i wlan0 terminate,退出wpa_supplicant,并停止wlan0
#使用zhd-1測試帶密碼wifi,請務(wù)必保持耐心,不要隨便^C,請久等。。(ping的丟包率在40%以上。。。)
三、應(yīng)用程序配置(AP篇)
1、sh: iw list
a.找到Supported interface modes, 發(fā)現(xiàn)內(nèi)有AP,lucky,go next;
b. No AP exist, oh shit! and fuck too! You doomed, breake a window and just jump off, goodbye and never say hi ~~~
2、建立/etc/hostapd.conf,內(nèi)容如下:
interface=wlan0 #所用的網(wǎng)卡
driver=nl80211 #所用的驅(qū)動
ssid=hostapd #熱點名稱
channel=6 #也稱為頻段,wifi共有13個通道,其中1、6、11是最佳頻道
hw_mode=g #可以為a、b、g
ignore_broadcast_ssid=0 #廣播ssid
auth_algs=1 # 1=WPA2,2=WEP
wpa=2 # 1=WPA1, 2=WPA2,3=BOTH
wpa_passphrase=12345678 #密碼
wpa_key_mgmt=WPA-PSK #加密方式
wpa_pairwise=TKIP # 802.11g加密算法
rsn_pairwise=CCMP # 802.11i加密算法
3、hostapd -d /etc/hostapd.conf
-d表示debug模式,所以會出來一大片信息,仔細檢查有沒有發(fā)現(xiàn)file not found錯誤,一般是由于配置錯誤導(dǎo)致的,有時候也會是驅(qū)動的原因。這個時候用手機應(yīng)該能夠看到有一個叫hostapd的熱點。。。
4、接下來,配置udhcpd,配置文件樣本可以在buildroot/output/build/busybox***/examples/udhcpd/udhcpd.conf中找到,使用cat udhcpd | grep ^# -v命令,查看默認的配置
5、那么,其實呢,這個東東是建立在有線網(wǎng)絡(luò)的基礎(chǔ)上的,并且要作為一個能夠上網(wǎng)的路由器使用,而我們只需要互聯(lián)通信就ok了,所以有很多東西是沒有必要的,核心配置,只有如下的幾條:
#確定IP的范圍
start 192.168.0.20
end 192.168.0.25
#選定udhcpd的設(shè)備
interface wlan0
option subnet 255.255.255.0 #子網(wǎng)掩碼
option router 192.168.0.1 #網(wǎng)關(guān)(就是本機)
option lease 86400 #租約時間,其實就是該IP地址的生命周期,單位是秒,86400是一天
設(shè)置好了后,保存在/etc/udhcpd.conf;
6、hostapd /etc/hostapd.conf -B
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 #注意,一定要和udhcpd.conf嚴格匹配
touch /var/lib/misc/udhcpd.leases
udhcpd -S /etc/udhcpd.conf
7、用手機再找到hostapd熱點,連接,連接了之后,查看手機IP;
8、開發(fā)板:ping -I wlan0手機ip, 如果有應(yīng)答,就成功了。
附一、開源驅(qū)動的應(yīng)用程序配置(僅client)
#現(xiàn)在的驅(qū)動程序已不支持iwconfig,用iwconfig配置任何新版wlan驅(qū)動均會報錯
1、ifconfig wlan0 up
2、iwconfig wlan0 scan #得到附近AP的列表
3、iwconfig wlan0 essid "zhd-1" key "123456789"
Wi-Fi?WirelessFidelity,無線保真 技術(shù)與藍牙技術(shù)一樣,同屬于在辦公室和家庭中使用的短距離無線技術(shù)。該技術(shù)使用的使 2.4GHz附近的頻段,該頻段目前尚屬沒用許可的無線頻段。其目前可使用的標準有兩個,分別是IEEE802.11a和IEEE802.11b。該技術(shù) 由于有著自身的優(yōu)點,因此受到廠商的青睞。
Wi-Fi技術(shù)突出的優(yōu)勢在于:
其一,無線電波的覆蓋范圍廣,基于藍牙技術(shù)的電波覆蓋范圍非常小,半徑大約只有50英尺左右?約合15米 ,而Wi-Fi的半徑則可達300英尺左右? 約合100米 ,辦公室自不用說,就是在整棟大樓中也可使用。最近,由Vivato公司推出的一款新型交換機。據(jù)悉,該款產(chǎn)品能夠把目前Wi-Fi無線網(wǎng) 絡(luò)300英尺?接近100米 的通信距離擴大到4英里?約6.5公里 。
其二,雖然由Wi-Fi技術(shù)傳輸?shù)臒o線通信質(zhì)量不是很好,數(shù)據(jù)安全性能比藍牙差一些,傳輸質(zhì)量也有待改進,但傳輸速度非常快,可以達到11mbps,符合個人和社會信息化的需求。
其三,廠商進入該領(lǐng)域的門檻比較低。廠商只要在機場、車站、咖啡店、圖書館等人員較密集的地方設(shè)置“熱點”,并通過高速線路將因特網(wǎng)接入上述場 所。這樣,由于“熱點”所發(fā)射出的電波可以達到距接入點半徑數(shù)十米至100米的地方,用戶只要將支持無線LAN的筆記本電腦或PDA拿到該區(qū)域內(nèi),即可高 速接入因特網(wǎng)。也就是說,廠商不用耗費資金來進行網(wǎng)絡(luò)布線接入,從而節(jié)省了大量的成本。
在嵌入式產(chǎn)品中,wifi的比重越來越來大,本文只是簡略講下wifi的配置,我們需要如下幾個命令: iwlist iwconfig ifconfig route
首先用1:iwlist eth1 scanning 查看無線路由
2:iwconfig eth1 essid "無線路由的名稱"
3: ifconfig eth1 IP
4: route add default gw 網(wǎng)關(guān)
對于帶密碼的路由器,設(shè)置如下:
1:iwconfig eth1 key s:密碼
2:iwconfig eth1 key open
3:ifconfig eth1 essid "名稱"
4:ifconfig eth1 IP
5:route add default gw 網(wǎng)關(guān)
wifi模塊驅(qū)動
使用系統(tǒng)wifi功能的第一步是確定設(shè)備wifi模塊的型號并安裝相應(yīng)的驅(qū)動程序。在嵌入式開發(fā)中,一般是需要獲取到wifi模塊的驅(qū)動源碼,然后進行交叉編譯來構(gòu)建驅(qū)動模塊并使用insmod命令進行安裝。
一般而言,WIFI模塊具有兩種工作模式:
Station Mode: 工作站模式,用來接入路由器等AP
AP Mode: 接入點模式,用來被接入使用
不同模式的wifi驅(qū)動代碼可能不一樣,所以也許會需要安裝兩個驅(qū)動模塊,分別來支持這兩種模式功能,具體請參考對應(yīng)wifi模塊的手冊與指南文檔。
主要工具
Linux系統(tǒng)中主要使用的wifi配置工具有兩種:
wireless tools: 包含iwconfig,iwlist,iwspy,iwpriv等工具,主要配置wep加密wifi
wpa_supplicant:包含wpa_cli,wpa_supplicant等工具,主要配置wpa加密wifi
因為目前常用的wifi網(wǎng)絡(luò)大部分都是使用的wpa協(xié)議進行加密,所以wpa_supplicant工具使用的比較多,但是在wifi接口的管理方面,wireless tools工具依然還是很有用的。
wireless tools
該工具包是Linux Wireless Extensions(LWE)的用戶層配置工具之一。LWE是Linux下對無線網(wǎng)絡(luò)配置的工具,包括內(nèi)核的支持、用戶層配置工具和驅(qū)動接口的支持三部分。目前很多無線網(wǎng)卡都支持LWE,而且主流的Linux發(fā)布版本,比如Redhat Linux、Ubuntu Linux都已經(jīng)帶了這個配置工具。
編譯構(gòu)建之后會生成命令:iwconfg,iwlist,iwspy,iwpriv等,這些命令的使用依賴于生成的動態(tài)庫文件:libiw.so.29,因此拷貝這些命令到目標機器上時,記得將該庫文件一起拷貝到系統(tǒng)的lib目錄下面,否則會提示找不到庫文件。
iwconfig是LWE最主要的工具,可以對無線網(wǎng)卡的大部分參數(shù)進行配置。具體的命令參數(shù)與選項可以通過help命令來查看了解。其中一些參數(shù)的解釋如下:
essid:設(shè)置無線網(wǎng)卡的ESSID(Extension Service Set ID)。通過ESSID來區(qū)分不同的無線網(wǎng)絡(luò),正常情況下只有相同ESSID的無線站點才可以互相通訊,除非想監(jiān)聽無線網(wǎng)絡(luò)。其后的參數(shù)為雙引號括起的ESSID字符串,或者是any/on/off,如果ESSID字符串中包含any/no/off,則需要在前面加"--"。
mode:設(shè)置無線網(wǎng)卡的工作模式,可以是
Ad-hoc:不帶AP的點對點無線網(wǎng)絡(luò)
Managed:通過多個AP組成的網(wǎng)絡(luò),無線設(shè)備可以在這個網(wǎng)絡(luò)中漫游
Master:設(shè)置該無線網(wǎng)卡為一個AP
Repeater:設(shè)置為無線網(wǎng)絡(luò)中繼設(shè)備,可以轉(zhuǎn)發(fā)網(wǎng)絡(luò)包
Secondary:設(shè)置為備份的AP/Repeater
Monitor:監(jiān)聽模式
Auto:由無線網(wǎng)卡自動選擇工作模式
freq/channel:設(shè)置無線網(wǎng)卡的工作頻率或者頻道,小于1000的參數(shù)被認為是頻道,大于10000的參數(shù)被認為是頻率。頻率單位為Hz,可以在數(shù)字后面附帶k, M, G來改變數(shù)量級,比如2.4G。頻道從1開始。使用iwlist工具可以查看無線網(wǎng)卡支持的頻率和頻道。參數(shù)off/auto指示無線網(wǎng)絡(luò)自動挑選頻率。 注意:如果是Managed模式,AP會指示無線網(wǎng)卡的工作頻率,因此該設(shè)置的參數(shù)會被忽略。Ad-hoc模式下只使用該設(shè)定的頻率初始無線網(wǎng)絡(luò),如果加入已經(jīng)存在的Ad-hoc網(wǎng)絡(luò)則會忽略該設(shè)置的頻率參數(shù)。
ap:連接到指定的AP或者無線網(wǎng)絡(luò),后面的參數(shù)可以是AP的MAC地址,也可以是iwlist scan出來的標識符。如果是Ad-hoc,則連接到一個已經(jīng)存在的Ad-hoc網(wǎng)絡(luò)。使用off參數(shù)讓無線網(wǎng)卡不改變當前已連接的AP下進入自動模式。any/auto參數(shù),無線網(wǎng)卡自動選擇最好的AP。 注意:如果無線信號低到一定程度,無線網(wǎng)絡(luò)會進入自動選擇AP模式。
rate/bit:如果無線網(wǎng)卡支持多速率,則可以通過該命令設(shè)置工作的速率。小于1000的參數(shù)由具體的無線網(wǎng)卡驅(qū)動定義,一般是傳輸速率的索引值,大于1000的為速率,單位bps,可以在數(shù)字后面附帶k, M, G來指定數(shù)量級。auto參數(shù)讓無線網(wǎng)卡自動選擇速率fixed參數(shù)讓無線網(wǎng)卡不使用自動速率模式。
txpower:如果無線網(wǎng)卡支持多發(fā)射功率設(shè)定,則使用該參數(shù)設(shè)定發(fā)射,單位為dBm,如果指定為W(毫瓦),則轉(zhuǎn)換公式為: dBm=30+log(W)。參數(shù)on/off可以打開和關(guān)閉發(fā)射單元,auto和fixed指定無線是否自動選擇發(fā)射功率。
sens:設(shè)置接收靈敏度的下限,在該下限之下,無線網(wǎng)卡認為該無線網(wǎng)絡(luò)信號太差,不同的網(wǎng)卡會采取不同的措施,一些現(xiàn)代的無線網(wǎng)卡會自動選擇新的AP。正的參數(shù)為raw data,直接傳給無線網(wǎng)卡驅(qū)動處理,一般認為是百分比。負值表示dBm值。
retry:設(shè)置無線網(wǎng)卡的重傳機制。limit ‘value’ 指定最大重傳次數(shù);lifetime ‘value’指定最長重試時間,單位為秒,可以附帶m和u來指定單位為毫秒和微秒。如果無線網(wǎng)卡支持自動模式,則在limit和lifetime之前還可以附加min和max來指定上下限值。
rts:指定RTS/CTS握手方式,使用RTS/CTS握手會增加額外開銷,但如果無線網(wǎng)絡(luò)中有隱藏?zé)o線節(jié)點或者有很多無線節(jié)點時可以提高性能。 后面的參數(shù)指定一個使用該機制的最小包的大小,如果該值等于最大包大小,則相當于禁止使用該機制。可以使用auto/off/fixed參數(shù)。
frag:設(shè)置發(fā)送數(shù)據(jù)包的分片大小。設(shè)置分片會增加額外開銷,但在噪聲環(huán)境下可以提高數(shù)據(jù)包的到達率。一般情況下該參數(shù)小于最大包大小,有些支持Burst模式的無線網(wǎng)卡可以設(shè)置大于最大包大小的值來允許Burst模式。還可以使用auto/fixed/off參數(shù)。
key/enc[ryption]:設(shè)置無線網(wǎng)卡使用的加密密鑰,此處為設(shè)置WEP模式的加密key,如果要使用WPA,需要wpa_supplicant工具包。 密鑰參數(shù)可以是 XXXX-XXXX-XXXX-XXXX 或者 XXXXXXXX 格式的十六進制數(shù)值,也可以是s:xxxxxx的ASCII字符。如果在密鑰參數(shù)之前加了[index],則只是設(shè)置該索引值對應(yīng)的密鑰,并不改變當前的密鑰。直接指定[index]值可以設(shè)置當前使用哪一個密鑰。指定on/off可以控制是否使用加密模式。open/restricted指定加密模式,取決于不同的無線網(wǎng)卡,大多數(shù)無線網(wǎng)卡的open模式不使用加密且允許接收沒有加密的數(shù)據(jù)包,restricted模式使用加密。可以使用多個key參數(shù),但只有最后一個生效。 WEP密鑰可以是40bit,用10個十六進制數(shù)字或者5個ASCII字符表示,也可以是128bit,用26個十六進制數(shù)字或者13個ASCII字符表。
power:設(shè)置無線網(wǎng)卡的電源管理模式。period ‘value’ 指定喚醒的周期,timeout ‘value’指定進入休眠的等待時間,這兩個參數(shù)之前可以 加min和max修飾,這些值的單位為秒,可以附加m和u來指定毫秒和微秒。off/on參數(shù)指定是否允許電源管理,all/unicast/multicast指定允許喚醒的數(shù)據(jù)包類型。
commit:提交所有的參數(shù)修改給無線網(wǎng)卡驅(qū)動。有些無線網(wǎng)卡驅(qū)動會先緩存無線網(wǎng)卡參數(shù)修,使用這個命令來讓無線網(wǎng)卡的參數(shù)修改生效。不過一般不需要使用該命令,因為無線網(wǎng)卡驅(qū)動最終都會是參數(shù)的修改生效,一般在debug時會用到。
這些工具命令的常用使用示例:
掃描可用的無線網(wǎng)絡(luò)
iwlist [wifi-name] scanning
其中wifi-name為無線網(wǎng)卡的名字,比如網(wǎng)卡eth0就是系統(tǒng)默認的網(wǎng)卡名字, wifi-name可以用ifconfig查看,一般為ra0(無線網(wǎng)卡),不過需要ifconfig ra0 up。
掃描網(wǎng)絡(luò)信息
iwlist ra0 scan
===<rt_ioctl_giwscan.11(11) BSS returned, data-<length = 1427
ra0 Scan completed :
Cell 01 - Address:C4:CA:D9:1D:9E:A0
Protocol:802.11b/g/n
ESSID:""
Mode:Managed
Frequency:2.412 GHz(Channel 1)
Quality=7/100 Signal level=-87 dBm Noise level=-82 dBm
Encryption key:off
Bit Rates:54 Mb/s
如上:ESSID項的值即為無線網(wǎng)絡(luò)的名字,如上的“TXJ”等。如果值為空,說明在無線路由勾選了隱藏ESSID的選項。ESSID是很關(guān)鍵的,如果被隱藏了,也不是不能連接,而是需要破解,用到其他的工具,非常麻煩。
設(shè)置要連接的網(wǎng)絡(luò)類型
iwpriv ra0 set NetworkType=Infra
設(shè)置要連接的無線網(wǎng)絡(luò)的安全模式
iwpriv ra0 set AuthMode=WPA2PSK
設(shè)置網(wǎng)絡(luò)加密方式:(CCMP即為AES)
iwpriv ra0 set EncrypType=TKIP
設(shè)置連接時的密碼
iwprivra0 set WPAPSK=******* //********為加密網(wǎng)絡(luò)的密碼
連接該網(wǎng)絡(luò):有兩種方式:
iwpriv ra0 set SSID=TXJ
iwconfig ra0 essid TXJ
至此,如果密碼正確,就可以連接上網(wǎng)絡(luò)TXJ了。
查看狀態(tài)
iwpriv ra0 connStatus
當然,你也可以用iwconfig命令查看狀態(tài)。
wpa_supplicant
wpa_supplicant是目前常用的工具之一,但缺點是它不支持所有的驅(qū)動。請瀏覽wpa_supplicant網(wǎng)站獲得它所支持的驅(qū)動列表。wpa_supplicant目前只能連接到那些你已經(jīng)配置好ESSID的無線網(wǎng)絡(luò)。wireless-tools支持幾乎所有的無線網(wǎng)卡和驅(qū)動,但它不能連接到那些只支持WPA的AP。
經(jīng)過編譯后的wpa_supplicant源程序可以看到兩個主要的可執(zhí)行工具:wpa_supplicant和wpa_cli。wpa_supplicant是核心程序,它和wpa_cli的關(guān)系就是服務(wù)端和客戶端的關(guān)系:后臺運行wpa_supplicant,使用wpa_cli來搜索、設(shè)置、和連接網(wǎng)絡(luò)。
使用wpa_supplicant來連接wifi的具體步驟主要是:
啟動wpa_supplicant后臺服務(wù)程序:
/sbin/wpa_supplicant -d -Dwext -iwlan0 -c /etc/wpa_supplicant.conf
其中:
-d :增加調(diào)試信息
-Dwext :wext,驅(qū)動名稱
-iwlan0 :wlan0,網(wǎng)絡(luò)接口名稱
/etc/wpa_supplicant.conf :配置文件
配置文件的內(nèi)容大致如下:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
update_config=1
network={
ssid="test-ap"
scan_ssid=1
psk=37bca5cf24a345f514d319211822f568bba28f8f0b74c894e7644
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
network里面的內(nèi)容就是接入AP的配置,wpa_supplicant啟動時會以該配置去連接wifi。幾個選項的介紹如下,更多的解釋可以參考官方的配置文件注釋。
ssid 接入點名稱
scan_ssid=1 如果你的無線接入點是隱藏的,那么這個就是必須的。
psk=xx 是加密后的密碼,用wpa_passphrase自動生成的
proto=RSN WPA2只是RSN的一個別名,支持WPA和WPA2
關(guān)于psk加密的生成,使用wpa_passphrase命令如下:
$ wpa_passphrase TPLINK 12345678
network={
ssid="TPLINK"
#psk="12345678"
psk=992194d7a6158009bfa25773108291642f28a0c32a31ab2556a15dee97ef0dbb
}
這里表示名為TPLINK的接入點,密碼是12345678,輸出就是該接入點在wpa_supplicant.conf里面的配置內(nèi)容。
執(zhí)行wpa_cli工具進行搜索和連接
wpa_cli -i wlan0
wlan0是wifi接口名稱,以上名列會進入交互模式,然后進行具體的動作。具體支持的命令可以通過help命令來查看,以下進介紹常用的幾個命令。
scan 掃描當前可以的WiFi列表
scan_result 查看上次scan的掃描結(jié)果
add_network 添加一個AP連接網(wǎng)絡(luò)
set_network 設(shè)置連接網(wǎng)絡(luò)的相關(guān)參數(shù)
get_network 獲取連接網(wǎng)絡(luò)的參數(shù)
remove_network 刪除一個連接網(wǎng)絡(luò)
enable_network 連接到指定的AP
disable_network 禁止一個網(wǎng)絡(luò)
disconnet 端口當前的AP連接
status 查看當前的連接狀態(tài)信息
save_config 保存配置
一些交互連接的示例:
連接無加密的AP
add_network
set_network 0 ssid "ap1"
set_network 0 key_mgmt NONE
enable_network 0
quit
連接WEP加密AP
add_network
set_network 1 ssid "ap2"
set_network 1 key_mgmt NONE
set_network 1 wep_key0 "your ap password"
enable_network 1
連接WPA-PSK/WPA2-PSK加密的AP
add_network
set_network 2 ssid "ap3"
set_network 2 psk "your pre-shared key"
enable_network 2
最近在開發(fā)一個WiFi工具箱,其中了解到挺多的wifi和網(wǎng)絡(luò)相關(guān)的命令,這里簡單總結(jié)一下:
1.wpa系列
wpa是一個linux自帶的WiFi管理工具,一般python或者其他wifi庫在底層都是調(diào)用wpa的相關(guān)的命令,所以了解wpa命令很重要,wpa服務(wù)啟動(基于conf):
wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
查看當前無線網(wǎng)卡狀態(tài):
wpa_cli -iwlan0 status
萬一啟動報錯,可以先把運行中的wpa_supplicant.conf進程殺掉:
sudo pkill -f wpa_supplicant.conf
wifi掃描:
wpa_cli -iwlan0 scan
wpa_cli -iwlan0 scan_results
2.ifconfig系列:
另外一個實用性很高的命令就是ifconfig,可以用來查看有線、無線網(wǎng)卡和設(shè)備網(wǎng)絡(luò)狀態(tài)
ifconfig
還有很多其他的功能如啟動無線網(wǎng)卡:
ifconfig wlan0 up
另外,簡單說下ifconfig的內(nèi)容,內(nèi)容中會顯示有線網(wǎng)卡(我的名稱是eth0),無線網(wǎng)卡是wlan0,所以上面命令出現(xiàn)的是wlan0,另外還有l(wèi)o,本地的虛擬網(wǎng)卡
3.nc系列:
nc不是腦殘,是netcat,這個命令用來檢查服務(wù)器端口,或者建立tcp、udp等連接很有作用,感興趣可以自己百度。
4.路由及路由表:
有時候連接不上指定的服務(wù),可能是因為找不到路由,所以查看路由及路由表:
route -n
ip route
iptables -I ufw-user-input -p tcp --dport 3389 -j ACCEPT //有時候遠程桌面連接不上的原因,關(guān)閉端口的防火墻
5.查看wifi密碼系列:
Linux:
cd /etc/NetworkManager/system_connections
ls // 查看所有連接過的wifi
sudo cat 指定wifi名稱 //在wifi-security字段內(nèi)的psk即為密碼
Windows:
netsh wlan show profiles
netsh wlan show profile name=指定WiFi名稱 key=clear
安卓手機:
很多安卓手機都有wifi分享功能,會生成一個二維碼,其實這個二維碼包含了wifi密碼,貌似底層就是利用獲取wpa的conf文件得到密碼的,要解出二維碼的密碼很簡單,可以直接打開微信掃一掃即可看到密碼。
6.網(wǎng)卡獲取ip:
sudo dhclient wlan0
首先,我假設(shè)您們都已經(jīng)正確安裝了無線網(wǎng)卡的驅(qū)動程序。沒有這前提,后續(xù)的一切都如鏡花水月。如果您你機器確實沒有正確安裝上,您應(yīng)該看看關(guān)于您的發(fā)布版本的維基和文檔。
然后您就可以用如下命令來檢查是哪一個接口來支持無線連接的:
$ iwconfig
一般來說,無線接口都叫做 wlan0。當然也有例外的,但在這篇教程中我們將會一直用通用叫法。
以防萬一,你得確認下以使此接口服務(wù)是啟動著的:
$ sudo ip link set wlan0 up
一但確認了無線接口是工作著的,你就可以用如下命令來掃描附近的無線網(wǎng)絡(luò)了:
$ sudo iw dev wlan0 scan | less
根據(jù)掃描出的結(jié)果,可以得到網(wǎng)絡(luò)的名字(它的 SSID),它的信息強度,以及它使用的是哪個安全加密的(如:WEP、WPA/WPA2)。從此時起,將會分成兩條路線:情況很好、很容易的以及情況稍微復(fù)雜的。
如果您想連接的網(wǎng)絡(luò)是沒有加密的,您可以用下面的命令直接連接:
$ sudo iw dev wlan0 connect [網(wǎng)絡(luò) SSID]
如果網(wǎng)絡(luò)是用 WEP 加密的,也非常容易:
$ sudo iw dev wlan0 connect [網(wǎng)絡(luò) SSID] key 0:[WEP 密鑰]
但網(wǎng)絡(luò)使用的是 WPA 或 WPA2 協(xié)議的話,事情就不好辦了。這種情況,您就得使用叫做 wpasupplicant 的工具,它默認是沒有的。然后需要修改 /etc/wpasupplicant/wpa_supplicant.conf 文件,增加如下行:
network={ ssid="[網(wǎng)絡(luò) ssid]" psk="[密碼]" priority=1}
我建議你??在文件的末尾添加它,并確保其他配置都注釋掉。要注意 SSID 和密碼字串都是大小寫敏感的。在技術(shù)上您也可以把接入點的名稱當做是 SSID,使用 wpa_supplicant 工具的話會有合適的 SSID 來替代這個名字。
一旦配置文件修改完成后,在后臺啟動此命令:
$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
最后,無論是連到開放的網(wǎng)絡(luò)還是加密的安全網(wǎng)絡(luò),您都得獲取 IP 地址。簡單地使用如下命令:
$ sudo dhcpcd wlan0
如果一切順利的話,您應(yīng)該已經(jīng)通過 DHCP 獲取到了一個全新的本地 IP,這個過程是在后臺自動完成的。如果想確認下是否真正連接上的話,您可以再一次輸入如下命令檢查:
$ iwconfig
最后,我認為多次重復(fù)第一步的檢查操作是很有必要的。您永遠不會知道什么時候您的圖形用戶界面掛了,或者是什么時候不能訪問無線連接了,所以現(xiàn)在就準備著用命令來檢測吧。還有,前面提到過的,有很多種方式(如 NetworkManager、wicd、netcfg、wifi 等等)來管理無線連接。我堅持使用最基本的方式,但在某些情況下,我使用的工具可能您還沒有,所以您在之前就得先下載它們。另一方面,有很多高級的應(yīng)用程序,他們確實是不包含在“默認包”里面的,使用它們會大大簡化操作過程。但一般建議是開始的話最好從基本的來。謝謝閱讀,希望能幫到大家,請繼續(xù)關(guān)注Linux公社,我們會努力分享更多優(yōu)秀的文章。
本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2017-01/139708.htm
總結(jié)
以上是生活随笔為你收集整理的linux wifi相关命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 03-drawcommands工程分析详
- 下一篇: HTML中footer标签的使用方法