日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

linux wifi相关命令

發(fā)布時間:2023/12/15 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 linux wifi相关命令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。