Linux 如何通过bash获取当前连接网络的BSSID?
我正在制作一个小脚本,它需要我的计算机当前连接到的无线网络的BSSID,并将其存储在一个变量中。 如果我的问题很奇怪,我很抱歉——我对bash很陌生——但我想知道这样的事情是否可能发生?Linux 如何通过bash获取当前连接网络的BSSID?,linux,bash,Linux,Bash,我正在制作一个小脚本,它需要我的计算机当前连接到的无线网络的BSSID,并将其存储在一个变量中。 如果我的问题很奇怪,我很抱歉——我对bash很陌生——但我想知道这样的事情是否可能发生? 非常感谢。要获取接入点的ESSID,请执行以下操作: iwconfig 2>/dev/null |grep ESSID |cut -d: -f2 他做这项工作。这对于通过其他方式获取BSSID可能很有用 获取BSSID的方法包括其他步骤。首先: a=$(route -n |grep ^0.0.0.0)
非常感谢。要获取接入点的ESSID,请执行以下操作:
iwconfig 2>/dev/null |grep ESSID |cut -d: -f2
他做这项工作。这对于通过其他方式获取BSSID可能很有用
获取BSSID的方法包括其他步骤。首先:
a=$(route -n |grep ^0.0.0.0)
获取默认路由;在我的例子中,结果是“0.0.0.0 192.168.1.1…”。然后
获取网关192.168.1.1。然后使用arp,我们可以得到硬件地址:
rout=$(arp -a |grep $gw)
hwadr=$(echo $rout |cut -d" " -f4)
返回关于网关的记录,在本例中为“192.168.1.1 0x1 0x2 58:98:35:…”。要提取硬件地址,请执行以下操作:
rout=$(arp -a |grep $gw)
hwadr=$(echo $rout |cut -d" " -f4)
我不确定上述步骤在任何情况下是否总是正确的,但我没有找到任何其他方法。希望有帮助。实用程序
iwconfig
将在接口报告的第二行中显示BSSID作为“访问点”。例如,在我的系统中:
wlp2s0 IEEE 802.11 ESSID:"My WIFI"
Mode:Managed Frequency:2.437 GHz Access Point: 12:34:56:78:9A:BC
Bit Rate=1 Mb/s Tx-Power=15 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=31/70 Signal level=-79 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:719 Invalid misc:1972 Missed beacon:0
您可以使用
iwconfig wlp2s0 | sed -n 's/.*Access Point: \([0-9\:A-F]\{17\}\).*/\1/p'
显然,如果接口名称不同,则用接口名称替换wlp2s0
。如果要将其保存到变量中,只需将所有行放入$()
中,并将其分配给所需的变量:
BSSID=$(iwconfig wlp2s0 | sed -n 's/.*Access Point: \([0-9\:A-F]\{17\}\).*/\1/p')
对于DD-WRT:
wl-i eth1状态| grep'BSSID'| grep-o-E'([[:xdigit:]{1,2}:){5}[:xdigit:]{1,2}'欢迎使用!请看,我想现在你的问题太宽泛了!让startet试着告诉我们你在哪里被卡住了,因为你提供了一个!虽然这适用于大多数家用电器,但路由器的硬件地址可能不同于接入点(例如,接入点充当网桥)。