GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erhalte ich eine Liste der verfügbaren drahtlosen Netzwerke unter Linux?

Es ist ziemlich einfach, einen Scan in der Befehlszeile durchzuführen. Die Manpages sind hier Ihr Freund (sehen Sie sich iwconfig an und iwlist ). Aber die Verwendung der C-Schnittstelle ist etwas schwieriger, also konzentriere ich mich darauf.

Zuallererst, wie andere Leute bereits erwähnt haben, laden Sie auf jeden Fall den Quellcode der drahtlosen Tools herunter. Die gesamte Dokumentation für die Programmierschnittstelle befindet sich in der .c Dateien. Soweit ich das beurteilen kann, gibt es keine Webdokumentation für die API. Der Quellcode ist jedoch ziemlich einfach zu lesen. Sie brauchen praktisch nur iwlib.h und iwlib.c für diese Frage.

Während Sie iw_set_ext verwenden können und iw_get_ext , die libiw implementiert eine grundlegende Scanfunktion iw_scan , aus dem Sie die meisten Informationen extrahieren können, die Sie benötigen.

Hier ist ein einfaches Programm, um die ESSID für alle verfügbaren drahtlosen Netzwerke zu erhalten. Kompilieren Sie mit -liw und mit sudo ausführen .

#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);
}

HAFTUNGSAUSSCHLUSS:Dies ist nur ein Demonstrationsprogramm. Es ist möglich, dass einige Ergebnisse kein essid haben. Außerdem wird davon ausgegangen, dass Ihre drahtlose Schnittstelle "wlan0" ist. Du verstehst schon.

Lesen Sie die iwlib Quellcode!


Das Wireless-Tools-Paket – zu dem iwlist gehört – enthält auch eine Wireless-Tools-Hilfsbibliothek. Sie müssen iwlib.h einbinden und mit libiw.a verlinken (dh fügen Sie -liw hinzu). Schlagen Sie dann in der Dokumentation für iw_set_ext nach Funktion. Der SIOCSIWSCAN Parameter wird am nützlichsten sein. Ein Beispiel für die Verwendung dieser Schnittstelle finden Sie in der KWifiManager-Quelle in der KDE-Bibliothek (siehe:Methode Interface_wireless_wirelessextensions::get_available_networks). Alternativ können Sie auch den Quellcode der Wireless Tools herunterladen und sich ansehen, wie die Funktion iwlib iw_set_ext auch zum Scannen in iwlist.c verwendet wird.

Was die Privilegien betrifft, stelle ich mir vor, dass der Prozess als root ausgeführt werden muss, um den Scan durchzuführen. Ich würde gerne wissen, ob dies auch anders möglich wäre.

Da Sie Ubuntu 8.04 verwenden, sollte das Paket libiw-dev von Nutzen sein.


Sie können nmcli verwenden die keine Root-Berechtigungen oder den Namen der WIFI-Schnittstelle erfordert.

nmcli -t -f ssid dev wifi

Linux
  1. So listen Sie alle verfügbaren Gebietsschemata unter RHEL7 Linux auf

  2. Wie kann ich den Tastaturstatus unter Linux abrufen?

  3. Wie können wir unter Linux eine Liste von Nicht-Systembenutzern erhalten?

  4. Wie kann ich unter Linux eine Liste aller falsch geschriebenen Wörter in einem Text erhalten?

  5. Wie kann ich überprüfen, ob cgroups auf meinem Linux-Host verfügbar sind?

So listen Sie Festplattenpartitionen unter Linux auf

So erhalten Sie eine Liste der MySQL-Benutzerkonten unter Linux

So listen Sie Festplatten unter Linux auf

So listen Sie Dienste unter Linux auf

So erhalten Sie Ihre IP-Adresse unter Linux

So erhalten Sie eine Liste symbolischer Links unter Linux