GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa mendapatkan daftar jaringan nirkabel yang tersedia di Linux?

Cukup mudah untuk melakukan pemindaian di baris perintah. Halaman manual adalah teman Anda di sini (lihat iwconfig dan iwlist ). Namun menggunakan antarmuka C sedikit lebih sulit, jadi saya akan fokus pada hal itu.

Pertama-tama, seperti yang disebutkan orang lain, unduh kode sumber alat nirkabel. Semua dokumentasi untuk antarmuka pemrograman ada di .c file. Sejauh yang saya tahu, tidak ada dokumentasi web untuk api. Namun, kode sumbernya cukup mudah dibaca. Anda hanya perlu iwlib.h dan iwlib.c untuk pertanyaan ini.

Meskipun Anda dapat menggunakan iw_set_ext dan iw_get_ext , libiw mengimplementasikan fungsi pemindaian dasar iw_scan , tempat Anda dapat mengekstrak sebagian besar informasi yang Anda butuhkan.

Ini adalah program sederhana untuk mendapatkan ESSID untuk semua jaringan nirkabel yang tersedia. Kompilasi dengan -liw dan jalankan dengan 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);
}

PENAFIAN:Ini hanya program demonstrasi. Beberapa hasil mungkin tidak memiliki essid. Selain itu, ini menganggap antarmuka nirkabel Anda adalah "wlan0". Anda mengerti.

Baca iwlib kode sumber!


Paket Alat Nirkabel -- yang merupakan bagian dari iwlist -- juga berisi Pustaka Pembantu Alat Nirkabel. Anda harus menyertakan iwlib.h dan tautkan dengan libiw.a (mis. tambahkan -liw). Kemudian cari dokumentasi untuk iw_set_ext fungsi. SIOCSIWSCAN parameter akan paling banyak digunakan. Untuk contoh cara menggunakan antarmuka ini, lihat sumber KWifiManager di pustaka KDE (lihat:metode Interface_wireless_wirelessextensions::get_available_networks). Sebagai alternatif, Anda juga dapat mengunduh kode sumber Alat Nirkabel dan melihat bagaimana fungsi iwlib iw_set_ext juga digunakan untuk memindai di iwlist.c.

Adapun hak istimewa, saya membayangkan prosesnya perlu dijalankan sebagai root untuk melakukan pemindaian. Saya ingin tahu apakah ini juga bisa dilakukan sebaliknya.

Karena Anda menggunakan Ubuntu 8.04, paket libiw-dev seharusnya dapat digunakan.


Anda dapat menggunakan nmcli yang tidak memerlukan izin root atau nama antarmuka WIFI.

nmcli -t -f ssid dev wifi

Linux
  1. Bagaimana saya bisa mendapatkan status keyboard di Linux?

  2. Bagaimana saya bisa mendaftar semua pengguna yang terkunci di Linux?

  3. Bagaimana saya bisa membuat daftar mode video yang tersedia untuk webcam USB di Linux?

  1. Cara membuat daftar semua lokal yang tersedia di RHEL7 Linux

  2. Bagaimana saya bisa mendapatkan daftar semua kata yang salah eja dalam teks menggunakan Linux?

  3. Bagaimana saya bisa memeriksa apakah cgroup tersedia di host Linux saya?

  1. Cara Menggunakan Perintah SS Linux

  2. Bagaimana cara mendaftar proses yang dilampirkan ke segmen memori bersama di linux?

  3. Bagaimana kita bisa mendapatkan daftar pengguna non-sistem di linux?