Назад | Перейти на главную страницу

Определите имя беспроводной сети из командной строки в Linux

Я использую свой личный ноутбук как дома, так и на работе, и в обоих случаях монтирую общие ресурсы nfs. Я хотел бы автоматизировать установку этих общих ресурсов, поскольку они выполняются каждый раз, когда я включаю ноутбук.

Я не могу сделать это обычной командой запуска, потому что беспроводное соединение занимает около получаса, чтобы найти сеть и подключиться.

Итак, я хотел написать сценарий, который каждые 5 секунд проверяет, подключен ли я к сети и какой у нее essid, чтобы я мог смонтировать соответствующие общие ресурсы.

Я смотрел iwconfig и ifconfig, и ни один из них не возвращал essid, только реальный IP-адрес.

ifconfig return ...

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.

Кто-нибудь знает простой способ узнать essid беспроводной сети, к которой вы подключены, через командную строку linux.

Обновить Я добавил информацию ifconfig и iwconfig выше, также я использую Ubuntu 10.10, и он был обновлен с 10.04, что, похоже, несколько испортило беспроводную связь. Они больше не используют старое приложение Network-Manager от gnome. Я также не могу подключиться к беспроводной сети в моей школе, так что с беспроводной связью определенно есть что-то странное.

iwevent возврат ...

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:

Запустив iwgetid, вы получите беспроводное устройство и SSID подключенной сети. Это часть беспроводных инструментов - кажется, вы уже установили, потому что iwevent также является его частью.

У меня есть старый сценарий, который выполняет такую ​​проверку с помощью iwconfig, который уже несколько лет работает в нескольких дистрибутивах Fedora:

iwconfig wlan0 | grep ESSID | awk -F: '{print $2}'
Then I just make a decision in the script based on what that returns, like start up a home service or a work service. Does your iwconfig command not return info like that once associated with an access point?

iwlist scan обязательно должен работать, чтобы дать вам SSID. Однако из вашего примера я не вижу реальных беспроводных интерфейсов. Я предлагаю вставить вывод iwconfig и ifconfig в ваш вопрос, чтобы понять это.

Также глядя на iwevent man, я думаю, что лучше всего запустить цикл, который вместо этого вызывает iwevent. Когда ssid изменится, iwevent обнаружит новый ssid и сообщит о нем.

Обратите внимание, что опрос каждые 5 секунд звучит довольно интенсивно, возможно, вам стоит запускать его реже?

с помощью iw

Предполагая, что ваш интерфейс wlp3s0, вы можете получить SSID с помощью iw и grep:

iw wlp3s0 info | grep -Po '(?<=ssid ).*'

Флаги -P и -o объясняются в этот ответ.

Вы также можете настроить свой скрипт на основе полученного IP-адреса, и ваша домашняя сеть будет выдавать другую подсеть.

Или основывайте его на MAC-адресе маршрута по умолчанию. Вам просто нужно будет обновить его, если маршрутизатор когда-либо изменится.