Я использую свой личный ноутбук как дома, так и на работе, и в обоих случаях монтирую общие ресурсы 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-адресе маршрута по умолчанию. Вам просто нужно будет обновить его, если маршрутизатор когда-либо изменится.