Determine o nome da rede sem fio a partir da linha de comando no Linux

2

Eu uso meu laptop pessoal tanto em casa quanto no trabalho e, em ambos os casos, montei as ações do nfs. Eu gostaria de automatizar a montagem desses compartilhamentos como eles são feitos toda vez que eu ligo o laptop.

Eu não posso fazer com que seja um comando normal de inicialização, porque a conexão sem fio leva cerca de meio minuto para localizar a rede e se conectar.

Então, eu queria escrever um script que verifica a cada 5 segundos se eu estiver conectado a uma rede e qual o conteúdo da rede para que eu possa montar os compartilhamentos apropriados.

Eu olhei para o iwconfig, e ifconfig e nenhum deles retornam um essid, apenas um endereço IP real.

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)

O iwconfig retorna ...

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.

O iwlist não retornou nada de útil ...

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.

Alguém sabe um método fácil para descobrir o essencial da rede sem fio que você está conectado através da linha de comando do linux.

Atualizar Eu adicionei o ifconfig e iwconfig informações acima, também estou executando o Ubuntu 10.10 e foi atualizado de 10.04, que parece ter mexido com o wireless um pouco. Eles não usam mais o antigo aplicativo Network-Manager do gnome. Também não consigo me conectar à rede sem fio de minha escola, então, definitivamente, para começar, definitivamente há algo interessante com a tecnologia sem fio.

retorno 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:
    
por Aglystas 05.04.2011 / 23:11

4 respostas

5

Executando o iwgetid, você obtém o dispositivo sem fio e o SSID da rede conectada. É parte das ferramentas sem fio - que você parece já ter instalado porque o iwevent também faz parte dele.

    
por 19.04.2011 / 13:01
1

iwlist scan certamente deve funcionar para fornecer o ssid. No entanto, a partir do seu exemplo, não vejo nenhuma interface sem fio real. Sugiro colar a saída do iwconfig e ifconfig na sua pergunta para ajudar a descobrir isso.

Além de olhar a página iwevent man, acho que talvez sua melhor aposta seja executar um loop que chame iwevent. Quando o ssid mudar, o iwevent detectará e reportará o novo ssid.

Note que o polling a cada 5 segundos soa bastante intensivo, talvez você deva executá-lo com menos frequência?

    
por 06.04.2011 / 02:46
1

Eu tenho um script antigo que lida com um cheque como este usando o iwconfig que funciona há vários anos em várias distribuições do Fedora:    

iwconfig wlan0 | grep ESSID | awk -F: '{print $2}'
Então eu simplesmente tomo uma decisão no script baseado no que isso retorna, como iniciar um serviço em casa ou um serviço de trabalho. O seu comando iwconfig não retorna informações como essas associadas a um ponto de acesso?     
por 06.04.2011 / 03:27
0

Você também pode ter seu script trabalhando com base no endereço IP obtido e fazer com que sua rede doméstica forneça uma sub-rede diferente.

Ou baseie-o no endereço MAC da rota padrão. Você só precisará atualizá-lo se o roteador mudar alguma vez.

    
por 06.04.2011 / 04:04