从 Linux 中的命令行确定无线网络名称

从 Linux 中的命令行确定无线网络名称

我在家里和办公室都使用我的个人笔记本电脑,并且在两种情况下我都安装了 nfs 共享。我希望自动安装这些共享,因为每次打开笔记本电脑时都会完成这些安装。

我无法使其成为正常启动命令来运行,因为无线连接大约需要半分钟来定位网络并连接。

所以我想编写一个脚本,每 5 秒检查一次我是否连接到网络以及网络的 essid 是什么,以便我可以安装适当的共享。

我查看了 iwconfig 和 ifconfig,它们都没有返回 essid,只有实际的 ip 地址。

ifconfig 返回...

eth0      Link encap:Ethernet  HWaddr 00:26:2d:a2:01:a8  
      UP BROADCAST MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
      Interrupt:16 

eth1      Link encap:Ethernet  HWaddr f0:7b:cb:45:36:b2  
      inet addr:192.168.0.48  Bcast:192.168.3.255  Mask:255.255.252.0
      inet6 addr: fe80::f27b:cbff:fe45:36b2/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:30972 errors:0 dropped:0 overruns:0 frame:124824
      TX packets:31414 errors:16 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:25279206 (25.2 MB)  TX bytes:4716009 (4.7 MB)
      Interrupt:17 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:336 errors:0 dropped:0 overruns:0 frame:0
      TX packets:336 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:48501 (48.5 KB)  TX bytes:48501 (48.5 KB)

iwconfig 返回...

lo        no wireless extensions.

eth0      no wireless extensions.

eth1      IEEE 802.11  Access Point: Not-Associated   
      Link Quality:5  Signal level:210  Noise level:165
      Rx invalid nwid:0  invalid crypt:0  invalid misc:0

vboxnet0  no wireless extensions.

iwlist 没有返回任何有用的信息...

iwlist scan
lo        Interface doesn't support scanning.

eth0      Interface doesn't support scanning.

eth1      Interface doesn't support scanning.

vboxnet0  Interface doesn't support scanning.

是否有人知道一种通过 Linux 命令行找出您所连接的无线网络的 essid 的简单方法。

更新 我添加了上面的 ifconfig 和 iwconfig 信息,而且我正在运行 Ubuntu 10.10,它是从 10.04 升级而来的,这似乎对无线有些影响。他们不再使用 gnome 中的旧网络管理器应用程序。我也无法连接到学校的无线网络,所以无线网络肯定有问题。

我将会回来……

iwevent
Waiting for Wireless Events from interfaces...
16:34:33.614296   eth1     Set ESSID:"" [13]
16:34:33.615723   eth1     Custom driver event:
16:34:33.615774   eth1     New Access Point/Cell address:Not-Associated
16:34:33.714835   eth1     Set ESSID:"" [62]
16:34:41.869636   eth1     Set Mode:Managed
16:34:41.869688   eth1     Set ESSID:"" [254]
16:34:42.815795   eth1     Custom driver event:
16:35:07.141450   eth1     Set Mode:Managed
16:35:07.141502   eth1     Set Frequency:24.12 GHz
16:35:07.141601   eth1     Set ESSID:"" [121]
16:35:08.160515   eth1     New Access Point/Cell address:00:1E:00:00:19:0E
16:35:08.252912   eth1     Registered node:00:1E:52:79:19:0E
16:35:08.252970   eth1     Custom driver event:

答案1

运行 iwgetid 即可获得无线设备和所连接网络的 SSID。它是无线工具的一部分 - 您似乎已经安装了它,因为 iwevent 也是其中的一部分。

答案2

iwlist scan应该可以为您提供 ssid。但是从您的示例中,我没有看到任何实际的无线接口。我建议将 iwconfig 和 ifconfig 的输出粘贴到您的问题中以帮助弄清楚这一点。

另外,从手册页来看iwevent,我认为最好的办法可能是运行一个调用 iwevent 的循环。当 ssid 发生变化时,iwevent 将检测并报告新的 ssid。

请注意,每 5 秒轮询一次听起来相当繁琐,也许您应该降低运行频率?

答案3

我有一个旧脚本,它使用 iwconfig 处理这样的检查,该脚本已在多个 Fe​​dora 发行版中运行了好几年:

iwconfig wlan0 | grep ESSID | awk -F: '{打印 $2}'
然后我只需根据返回的内容在脚本中做出决定,例如启动家庭服务或工作服务。一旦与接入点关联,您的 iwconfig 命令是否不会返回这样的信息?

答案4

您还可以让脚本根据获取的 IP 地址工作,并让您的家庭网络提供不同的子网。

或者以默认路由的 mac 地址为基础。如果路由器发生变化,您只需更新它即可。

相关内容