我在家里和办公室都使用我的个人笔记本电脑,并且在两种情况下我都安装了 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 处理这样的检查,该脚本已在多个 Fedora 发行版中运行了好几年:
iwconfig wlan0 | grep ESSID | awk -F: '{打印 $2}'然后我只需根据返回的内容在脚本中做出决定,例如启动家庭服务或工作服务。一旦与接入点关联,您的 iwconfig 命令是否不会返回这样的信息?
答案4
您还可以让脚本根据获取的 IP 地址工作,并让您的家庭网络提供不同的子网。
或者以默认路由的 mac 地址为基础。如果路由器发生变化,您只需更新它即可。