ENV:
[root@Fedora ~]# uname -r
5.1.19-300.fc30.x86_64
[root@Fedora ~]# cat /etc/redhat-release
Fedora release 30 (Thirty)
这两天月底,手机流量还有很多,正好可以把手机当热点,让笔记本可以上网。
在连手机热点的时候突然想到,怎么才能用命令行来连接呢,又是网上找资料又是测试系统里的命令,汗!!!
想到以前也有很多玩wpa_supplicant命令的,开始我的表演(哎呀~不要嫌啰嗦)
为了演示,把网断掉。
一、wpa_supplicant/wpa_cli(一定要root账号,其他账号操作权限不够,sudo命令都不行,不知怎么回事)
查看网络
[root@Fedora ~]# ifconfig wlp9s0 //减少信息,只找常用的这个网卡查看
wlp9s0: flags=4099 mtu 1500
ether f2:95:f5:1e:80:d4 txqueuelen 1000 (Ethernet)
RX packets 16832 bytes 13319654 (12.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16765 bytes 2713438 (2.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
另外的命令:
[root@Fedora ~]# iw dev
phy#0
Interface wlp9s0
ifindex 3
wdev 0x1
addr f2:95:f5:1e:80:d4
type managed
txpower 15.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcoltx-bytes tx-packets
0 0 0 0 0 0 0 00
#如果知道网卡名称,可以直接使用以下命令,和上面命令一样的
[root@Fedora ~]# iw dev wlp9s0 info
Interface wlp9s0
ifindex 3
wdev 0x1
addr 68:94:23:ba:ee:d5
ssid Honor 8
type managed
wiphy 0
channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
txpower 15.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytestx-packets
0 0 0 0 0 0 0 0 0
这里可以看到物理网卡和wlp9s0名称,之后我们要用的
查找网络
[root@Fedora ~]# iw wlp9s0 scan |grep SSID
SSID: Honor 8
要想查看具体信息,直接运行命令 # iw wlp9s0 scan
这样可以看到wifi热点的加密方式(想了解的自行百度、google)
wpa_passphrase命令,这个命令就是生成网络信息的:
wpa_passphrase "wifi名称" "密码"
[root@Fedora ~]# wpa_passphrase "Honor 8" "12345678"
network={
ssid="Honor 8"
#psk="12345678"
psk=6cda728e4eaa531716ee552ad9f14262ce98f00189fadb4e003f796902ff69f9
}
使用wpa_supplicant命令:
这里就是没有使用root用户,运行时一直出错,还以为命令错了呢,找了很久也没找出问题,后来直接root用户就成功了
[test@Fedora ~]$ sudo wpa_supplicant -i wlp9s0 -c<(wpa_passphrase "Honor 8" "12345678")
Successfully initialized wpa_supplicant
Failed to open config file '/dev/fd/63', error: No such file or directory
Failed to read or parse configuration '/dev/fd/63'.
[root@Fedora ~]# wpa_supplicant -i wlp9s0 -c<(wpa_passphrase "Honor 8" "12345678")
Successfully initialized wpa_supplicant
wlp9s0: SME: Trying to authenticate with a4:71:74:00:11:43 (SSID='Honor 8' freq=2437 MHz)
wlp9s0: SME: Authentication request to the driver failed
wlp9s0: SME: Trying to authenticate with a4:71:74:00:11:43 (SSID='Honor 8' freq=2437 MHz)
wlp9s0: SME: Authentication request to the driver failed
wlp9s0: SME: Trying to authenticate with a4:71:74:00:11:43 (SSID='Honor 8' freq=2437 MHz)
wlp9s0: SME: Authentication request to the driver failed
wlp9s0: SME: Trying to authenticate with a4:71:74:00:11:43 (SSID='Honor 8' freq=2437 MHz)
wlp9s0: SME: Authentication request to the driver failed
wlp9s0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="Honor 8" auth_failures=1 duration=10 reason=CONN_FAILED
wlp9s0: CTRL-EVENT-SSID-REENABLED id=0 ssid="Honor 8"
wlp9s0: SME: Trying to authenticate with a4:71:74:00:11:43 (SSID='Honor 8' freq=2437 MHz)
wlp9s0: SME: Authentication request to the driver failed
wlp9s0: CTRL-EVENT-SSID-TEMP-DISABLED id=0 ssid="Honor 8" auth_failures=2 duration=23 reason=CONN_FAILED
^Cnl80211: deinit ifname=wlp9s0 disabled_11b_rates=0
wlp9s0: CTRL-EVENT-TERMINATING
这就是成功了,手机上也 显示了连接一个设备,但是这个一起在运行也没有完成,多试了几次也是一样的,到最后才知道这样是行不通的了,没法正常连接啊,也不能上网。
只能再想其他的方法了。
wpa_supplicant和wpa_cli这两个命令是不能成功了。
二、nmcli网络管理命令
记得在去年学习RHEL7的时候,网络管理的命令 行是nmcli命令了,也包括nmtui的GUI命令,这个是不是可行 的呢?
[root@Fedora ~]# nmtui
bash: nmtui: command not found...
Install package 'NetworkManager-tui' to provide command 'nmtui'? [N/y]
看来GNOME的桌面环境是没安装这个GUI了,我们不用这个命令,不是还有个nmcli命令行么,
[root@Fedora ~]# nmcli
agent device help networking
connection general monitor radio
[root@Fedora ~]# nmcli device
connect disconnect lldp monitor set status
delete help modify reapply show wifi
[root@Fedora ~]# nmcli device
运行nmcli一路tab(玩linux不要说不知道tab)
wait,wait,,看到了什么,,wifi啊,这个可是正需要的啊,进去看看
[root@Fedora ~]# nmcli device wifi
IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
Honor 8 Infra 6 65 Mbit/s 100 ▂▄▆█ WPA2
[root@Fedora ~]#
这个正是我们需要的啊,也就是手机热点的信息。没错啊
之前的一次操作,不能算成功,应该是系统对网络信息有记录才导致的,之后再次使用就不成功了
[root@Fedora ~]# nmcli device connect
enp4s0f2 lo virbr0 wlp9s0
help p2p-dev-wlp9s0 virbr0-nic
[root@Fedora ~]# nmcli device connect wlp9s0
Passwords or encryption keys are required to access the wireless network 'Honor 8'.
Warning: password for '802-11-wireless-security.psk' not given in 'passwd-file' and nmcli cannot ask without '--ask' option.
Error: Connection activation failed: (7) Secrets were required, but not provided.
根据提示,再次运行命令,输入密码就可以了
[root@Fedora ~]# nmcli device connect wlp9s0 --ask
Passwords or encryption keys are required to access the wireless network 'Honor 8'.
Password (802-11-wireless-security.psk): ••••••••
Device 'wlp9s0' successfully activated with 'cfdc4bdc-3189-4129-a371-ea2b39825373'.
这就是再次操作不成功了,继续努力吧
[root@Fedora ~]# nmcli device connect wlp9s0
Error: Failed to add/activate new connection: A 'wireless' setting is required if no AP path was given.
可能是思路错了,要在wifi的命令来操作
[root@Fedora ~]# nmcli device wifi //tab之后有list和connect
connect help hotspot list rescan
[root@Fedora ~]# nmcli device wifi list 再tab看到的不再重要了,回去
bssid hwaddr ifname --rescan
[root@Fedora ~]# nmcli device wifi list
IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
Honor 8 Infra 6 65 Mbit/s 100 ▂▄▆█ WPA2
[root@Fedora ~]# nmcli device wifi connect //tab看到了我们想连接的热点
A4:71:74:00:11:43 Honor\ 8
[root@Fedora ~]# nmcli device wifi connect Honor\ 8 //tab后
bssid ifname password wep-key-type
hidden name private
#连接网络要用到网卡的,ifname这个都认识吧
#在输入ifname后再tab直接出wlp9s0,这是因为我的电脑就一个网卡
[root@Fedora ~]# nmcli device wifi connect Honor\ 8 ifname wlp9s0 //还差个密码呢
bssid ifname password wep-key-type
hidden name private
[root@Fedora ~]# nmcli device wifi connect Honor\ 8 ifname wlp9s0 password 12345678
Device 'wlp9s0' successfully activated with 'd31829c0-dfed-426f-be98-856892b589b4'.
#这里的12345678是我手机热点的密码,不要搞错哦
提示成功连接了,看看网络信息并测试下吧
[root@Fedora ~]# nmcli device show wlp9s0
GENERAL.DEVICE: wlp9s0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 68:94:23:BA:EE:D5
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: Honor 8 //这里就是wifi热点名称
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/17
IP4.ADDRESS[1]: 192.168.43.123/24
IP4.GATEWAY: 192.168.43.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.43.1, mt = 600
IP4.ROUTE[2]: dst = 192.168.43.0/24, nh = 0.0.0.0, mt = 600
IP4.DNS[1]: 192.168.43.1
IP6.ADDRESS[1]: 2409:8904:1e70:54a4:37a0:c1cc:d3c:57db/64
IP6.ADDRESS[2]: fe80::759b:6abb:6247:e936/64
IP6.GATEWAY: fe80::a671:74ff:fe00:1143
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 600
IP6.ROUTE[2]: dst = 2409:8904:1e70:54a4::/64, nh = ::, mt = 600
IP6.ROUTE[3]: dst = ::/0, nh = fe80::a671:74ff:fe00:1143, mt = 6>
IP6.ROUTE[4]: dst = ff00::/8, nh = ::, mt = 256, table=255
IP6.DNS[1]: 2409:8904:1e70:54a4::a5
lines 1-20/20 (END)
[root@Fedora ~]# ifconfig wlp9s0
wlp9s0: flags=4163 mtu 1500
inet 192.168.43.123 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::759b:6abb:6247:e936 prefixlen 64 scopeid 0x20
inet6 2409:8904:1e70:54a4:37a0:c1cc:d3c:57db prefixlen 64 scopeid 0x0
ether 68:94:23:ba:ee:d5 txqueuelen 1000 (Ethernet)
RX packets 16946 bytes 13344794 (12.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16964 bytes 2774702 (2.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@Fedora ~]# ping www.baidu.com
PING www.baidu.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=50 time=59.6 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=50 time=144 ms
^C
--- www.baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 59.625/102.054/144.484/42.430 ms
成功了,高兴下吧,哈哈!!
最后,从这次的经历也是明白了,新的系统更新的新的功能,会相应的整合以前的命令和功能,要想学好linux就要不断的学习和调整知识体系。虽然不知道前一个命令为什么不成功(可能是热点使用的WPA2-PSK加密吧,功能没有跟上)。
网上找了一大堆的wifi连接都是wpa_supplicant,看来还是没有新系统的nmcli命令更好用的啊。
有的时候还是要多在系统中找方法,毕竟网上的水军太多了,吃了很多亏,也浪费了很多时间。