Sonntag, 8. Januar 2012

yab - SSID's aller empfangbaren, drahtlosen Netzwerke ermitteln

In Anlehnung an meinen letzten Post möchte ich Euch heute zeigen wie man die verschiedenen Informationen auch per yab ermitteln kann. Beginnen möchte ich mit dem Ernitteln aller SSID's (Namen) der im Empfangsbereich vorhandenen drahtlosen Netzwerke.

Zuerst ermitteln wir per "ifconfig" die einzelnen Netzwerk- Interfaces und durchsuchen diese dann nach der Zeichenkette "wifi". Soweit ich in meinen Tests herausgefunden habe, haben alle drahtlosen Netzwerk- Adapter diese Zeichenkette in ihrem Namen. Anschließend werden, über den Befehl "ifconfig >Netzwerk- Interface> scan", alle drahlosen Netzwerke in der Umgebung aufgelistet. Das ganze in einem Array speichern und ein wenig filtern und schon bekommt man die gewünschten Informationen. Weitere Kommentare könnt Ihr wie immer dem Quelltext entnehmen.

Zurückgegeben wird ein String mit allen gefundenen SSID's welche, zur besseren Ansicht, durch jeweils ein "\n" getrennt sind.

Der Aufruf der Sub- Routine kann z.B. in folgender Form geschehen:

print _GetAllSSIDs$()


export sub _GetAllSSIDs$()

  // lokale Variablen definieren
  local NumberOfTokens
  local SystemInfo$
  local WifiAdapter$
  local WifiNetworkNames$
 
  dim Line$(1)
  
  // Liste aller Nertzwerk- Karten erstellen
  // den Befehl "ifconfig" ausführen und Ergebnis in
  // SystemInfo$ speichern
  SystemInfo$ = system$("ifconfig")

  // das Ergebnis ersteinmal in einzelne Zeile zerlegen
  NumberOfTokens = split(SystemInfo$, Line$(), "\n")

  // in den Zeilen mit führendem "/" nach dem String
  // "wifi" suchen (dies ist der Wifi- Adapter)
  for i = 1 to NumberOfTokens
 
    // die Zeile mit "dev" und "wifi" enthält den richtigen Adapter
    if (left$(Line$(i), 4) = "/dev") and (instr(Line$(i), "wifi")) then
  
      WifiAdapter$ = Line$(i)
 
    endif
  
  next

  // Nachdem der Wifi- Adapter ermittelt wurde, können nun
  // alle im Umkreis befindlichen, drahtlosen Netzwerke ermittelt
  // werden.
 
  // den Befehl "ifconfig  scan" ausführen und das Ergebnis
  // in SystemInfo$ speichern
  SystemInfo$ = system$("ifconfig " + WifiAdapter$ + " scan")
 
  // das Ergebnis wieder in einzelne Zeilen auftrennen
  NumberOfTokens = split(SystemInfo$, Line$(), "\n")
 
  // die erste Zeile ignorieren, ist nur die Spaltenbeschriftung
  for i = 2 to NumberOfTokens
 
    // nur die ersten 33 Zeichen jeder Zeile lesen und die
    // Leerzeichen entfernen
    WifiNetworkNames$ = WifiNetworkNames$ + trim$(left$(Line$(i), 33)) + "\n"
  
  next i

  // das Ergebnis als durch "LF" getrennten String zurückgeben
  return WifiNetworkNames$
   
end sub


(getestet mit Haiku R1 Alpha 3 und yab 1.5)

Keine Kommentare:

Kommentar veröffentlichen