GNU/Linux >> Linux の 問題 >  >> Linux

Linux で利用可能なワイヤレス ネットワークのリストを取得するにはどうすればよいですか?

コマンドラインでスキャンを実行するのは非常に簡単です。マニュアルページはあなたの味方です (iwconfig をチェックしてください) と iwlist )。しかし、C インターフェースを使用するのは少し難しいので、それに焦点を当てます。

まず第一に、他の人が言及したように、ワイヤレス ツールのソース コードを必ずダウンロードしてください。プログラミング インターフェイスのすべてのドキュメントは .c にあります。 ファイル。私が知る限り、API に関する Web ドキュメントはありません。ただし、ソースコードは非常に読みやすいです。ほとんど iwlib.h だけが必要です および iwlib.c

iw_set_ext を使用できますが、 そして iw_get_extlibiw 基本的なスキャン機能 iw_scan を実装します から、必要な情報のほとんどを抽出できます。

利用可能なすべてのワイヤレス ネットワークの ESSID を取得する簡単なプログラムを次に示します。 -liw でコンパイル sudo で実行 .

#include <stdio.h>
#include <time.h>
#include <iwlib.h>

int main(void) {
  wireless_scan_head head;
  wireless_scan *result;
  iwrange range;
  int sock;

  /* Open socket to kernel */
  sock = iw_sockets_open();

  /* Get some metadata to use for scanning */
  if (iw_get_range_info(sock, "wlan0", &range) < 0) {
    printf("Error during iw_get_range_info. Aborting.\n");
    exit(2);
  }

  /* Perform the scan */
  if (iw_scan(sock, "wlan0", range.we_version_compiled, &head) < 0) {
    printf("Error during iw_scan. Aborting.\n");
    exit(2);
  }

  /* Traverse the results */
  result = head.result;
  while (NULL != result) {
    printf("%s\n", result->b.essid);
    result = result->next;
  }

  exit(0);
}

免責事項:これは単なるデモンストレーション プログラムです。一部の結果には essid がない可能性があります。さらに、これはワイヤレス インターフェイスが「wlan0」であることを前提としています。わかります。

iwlib を読む ソースコード!


iwlist が含まれる Wireless Tools パッケージには、Wireless Tools Helper Library も含まれています。 iwlib.h を含める必要があります libiw.a とリンクします (つまり、-liw を追加します)。 iw_set_ext のドキュメントを参照してください。 関数。 SIOCSIWSCAN パラメータが最も役に立ちます。このインターフェイスの使用方法の例については、KDE ​​ライブラリの KWifiManager ソースを参照してください (Interface_wireless_wirelessextensions::get_available_networks メソッドを参照)。あるいは、Wireless Tools のソース コードをダウンロードして、iwlist.c で iwlib の iw_set_ext 関数がスキャンにどのように使用されているかを確認することもできます。

特権に関しては、スキャンを実行するにはプロセスをルートとして実行する必要があると思います。これが他の方法でも可能かどうか知りたい.

Ubuntu 8.04 を使用しているため、libiw-dev パッケージを使用する必要があります。


nmcli を使用できます root 権限や WIFI インターフェースの名前は必要ありません。

nmcli -t -f ssid dev wifi

Linux
  1. Linuxでキーボードの状態を取得するにはどうすればよいですか?

  2. Linuxで共有メモリセグメントに接続されているプロセスを一覧表示する方法は?

  3. Linuxでシステム以外のユーザーのリストを取得するにはどうすればよいですか?

  1. RHEL7Linuxで使用可能なすべてのロケールを一覧表示する方法

  2. Linux でロックされているすべてのユーザーを一覧表示するにはどうすればよいですか?

  3. Linux ホストで cgroup が使用可能かどうかを確認するにはどうすればよいですか?

  1. LinuxSSコマンドの使用方法

  2. Linux の USB Web カメラで利用可能なビデオ モードを一覧表示するにはどうすればよいですか?

  3. Linux を使用して、テキスト内のスペルミスのあるすべての単語のリストを取得するにはどうすればよいですか?