web-dev-qa-db-ja.com

Linuxのコマンドラインからワイヤレスネットワーク名を決定します

私は自宅と職場の両方で個人のラップトップを使用しており、どちらの場合もnfs共有をマウントしています。ラップトップの電源を入れるたびに行われるため、これらの共有のマウントを自動化したいと思います。

ワイヤレス接続がネットワークを見つけて接続するのに約30分かかるため、通常の起動コマンドを実行することはできません。

そこで、適切な共有をマウントできるように、ネットワークに接続しているかどうか、およびネットワークのessidを5秒ごとにチェックするスクリプトを作成したいと思いました。

私は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.

Linuxコマンドラインを介して接続しているワイヤレスネットワークのessidを見つける簡単な方法を知っている人はいますか。

更新上記のifconfigとiwconfigの情報を追加しました。また、Ubuntu 10.10を実行しており、10.04からアップグレードされました。これはワイヤレスを多少混乱させたようです。 gnomeの古いNetwork-Managerアプリを使用しなくなりました。学校のワイヤレスネットワークにも接続できないので、そもそもワイヤレスには間違いなくファンキーなものがあります。

iwevent return .. ..

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:
3
Aglystas

Iwgetidを実行すると、接続されているネットワークのワイヤレスデバイスとSSIDを取得できます。これはワイヤレスツールの一部です。iweventもその一部であるため、すでにインストールされているように見えます。

6
mndo

iwlist scanは確かにあなたにssidを与えるために働くはずです。ただし、あなたの例からは、実際のワイヤレスインターフェイスは表示されません。それを理解するのを助けるために、iwconfigとifconfigの出力を質問に貼り付けることをお勧めします。

また、iweventのマニュアルページを見ると、おそらくあなたの最善の策は、代わりにiweventを呼び出すループを実行することだと思います。 ssidが変更されると、iweventは新しいssidを検出して報告します。

5秒ごとのポーリングはかなり集中的に聞こえることに注意してください。おそらく、実行頻度を減らす必要がありますか?

1
Phil Hollenback

私は、iwconfigを使用してこのようなチェックを処理する古いスクリプトを持っています。これは、いくつかのFedoraディストリビューションで数年間機能しています。

iwconfig wlan0 | grep ESSID | awk -F: '{print $ 2}'
1
zilla

iw を使用

インターフェイスがwlp3s0であるとすると、iwgrepでSSIDを取得できます。

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

フラグ-Pおよび-oは、 この回答 で説明されています。

0
Matthias Braun

また、取得したIPアドレスに基づいてスクリプトを機能させ、ホームネットワークに別のサブネットを提供させることもできます。

または、デフォルトルートのMACアドレスに基づいてください。ルーターが変更された場合は、更新する必要があります。

0
becomingwisest