Wie kann ich herausfinden, ob der Adapter aufgehängt ist oder nicht?

Cazawhi

Geht ein
Registriert
13 Feb. 2016
Beiträge
357
Ort
im Funkloch
Servus miteinander,

Ich hab 'nen AP am laufen, der sich hin und wieder mal aufhängt (Verbinden nicht mehr möglich).
Fixen kann ich das Problem einfach, indem ich den Adapter mal neustarte (iwconfig wlan0 down, iwconfig wlan0 up).
Jetzt würd ich das gerne automatisieren, nur wie finde ich heraus ob er down ist?

Mein bisheriger Lösungsansatz wäre cronjob, der jede Minute das Script ausführt, welches eben prüft, bis jetzt hab ich als Übergangslösung eingetragen, dass er immer neustarten soll wenn gerade kein Client verbunden ist, aber würde das gern eleganter lösen.

LG
 
Vielleicht hilft dir das hier:


Der Trick ist also vielleicht, zu schauen was "/proc/net/wireless" zurückgibt, der Statuscode des Adapters steht dort in der zweiten Spalte.

Wenn ich den Adapter jetzt abschalte über den Switcher in XFCE, verschwindet zum Beispiel auch die Datei "wireless", ansonsten bekommt man hiermit den Status "0000" (was "up" sein sollte..., die Statuscodes habe ich eben nicht auf die schnelle gefunden.)

Hier die modifizierte Skriptzeile (habs nur etwas modifiziert aus dem Link oben):
[src=bash]watch -n 1 "awk 'NR==3 {print \"Status = \" \$2}''' /proc/net/wireless"[/src]

Na, hilft dir bestimmt schon :)
 
  • Thread Starter Thread Starter
  • #3
Also quasi (im loop nachschauen tut der cronjob eh schon, brauch ich kein watch dazu)

[src=bash]
#!/bin/bash

WLANCODE="cat /proc/net/wireless | sed -n '3p' | awk '{print $2}'"
STATUS=`hostapd_cli all_sta`
NOCLIENTS="Selected interface 'wlan0'"

if [ "$WLANCODE" != "0000" ]
then
if [ "$STATUS" = "$NOCLIENTS" ]
then
service hostapd stop
service dnsmasq stop

ifconfig wlan0 down
ifconfig wlan0 up

service dnsmasq start
service hostapd start
fi
fi

exit 0
[/src]
 
Sieht richtig aus, auch wenn ich nicht weiß wozu "hostapd" und "dnsmasq" sind.... :D

Ist die Frage, ob du wirklich überprüfen willst, ob Clients verbunden sind bzw. keine, falls der Adapter diese nicht sofort entfernt, so fern es ein Problem gibt. Aber da bin ich überfragt.
 
Zuletzt bearbeitet:
  • Thread Starter Thread Starter
  • #5
dnsmasq hab' ich schon rausgenommen, hostapd mag es vermutlich nicht wenn ihm der Adapter unter dem Hintern weggenommen wird (gehe ich von aus).

--- [2017-08-27 19:27 CEST] Automatisch zusammengeführter Beitrag ---

Problem: Wlan-Status verbleibt bei 0000, wenn es sich aufhängt.
 
Was sagt denn, im Fall der Adapter hat sich aufgehängt: sudo ifconfig wlan0

Bei mir sieht der Output für den Adapter dann so aus (erste Zeile):
"wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500"

ausgeschaltet:
"wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500"

Ist die Frage woher "ifconfig" sich die Daten für den Adapter herholt, aber im zweiten Beispiel fehlt das "RUNNING" und die Flags sind anders.
Vielleicht könnte man dass dann zumindest parsen oder auf Unterschiede überprüfen?

Kann aber auch sein das dies dann auch nichts bewirkt... wenn der Adapter einfach "blockiert" und nicht seinen Status ("RUNNING") oder andere Flags ermittelt/gelesen werden.

Edit:
Jetzt mal ne blöde Frage, kannst du nicht einen "ping" auf ein Gerät machen, und wenn dieser nichts zurückgibt bzw. ein Timeout kommt (Dauer kann man ja setzen) gilt es, das Gerät/Adapter neu zu starten?
 
Zuletzt bearbeitet:
  • Thread Starter Thread Starter
  • #7
Jetzt mal ne blöde Frage, kannst du nicht einen "ping" auf ein Gerät machen, und wenn dieser nichts zurückgibt bzw. ein Timeout kommt (Dauer kann man ja setzen) gilt es, das Gerät/Adapter neu zu starten?

Ich hab' kein Gerät, das dauerhaft angemeldet ist, sonst hätt ichs gleich so gemacht (war meine erste Überlegung).
 
Ähm, hast du, es ist ja ein Access Point, nicht die Möglichkeit, das Hauptgerät (Router) anzusprechen von dem das Signal weitergeleitet werden soll?
 
Okay, dann die Hardcore Methode? Mach einen Netzwerkscan: "sudo iwlist wlan0 scan"

Ich weiß nur nicht, ob das auch bei einem Access Point geht, aber einfach testen ;)

Im schlimmsten Fall solltest du etwas bekommen wie:
"wlan0 Interface doesn't support scanning : Device or resource busy" (ausgeschaltet!!)
Oder eben "wlan0 Scan completed.... [Auflistung aller gefundenen Netzwerke]"

So ein ähnlicher "Fehler" sollte dann vermutlich auch kommen, wenn das Device nicht angesprochen werden kann. Man müsste in die Manpages zu "iwlist" schauen, so fern vorhanden oder online, was es für Statusmeldungen geben kann oder wie der Befehl "fehlschlägt" bzw. aus geht mit "Timeout" oder ähnlichem, bei einem Fehler.
Wenn alles gut geht, hast du eventuell ein, kein, oder mehrere Geräte drin - aber eben keine Fehler wie "Interface doens't support scanning" oder ähnlichem.

Kannst du ja mal testen wenn du nur "sudo iwlist scan" eingibst, dann werden alle "Adapter" überprüft, so fern vorhanden.
 
  • Thread Starter Thread Starter
  • #11
Also im funktionierenden Zustand bekomme ich eine Ausgabe. Jetzt mach ich mal den cronjob aus und warte bis sich das Teil das nächste Mal aufhängt.
 
  • Thread Starter Thread Starter
  • #13
Nein, ich habe einen Cronjob. der den AP neu startet, sobald kein Client mehr verbunden ist. Das ist meine Übergangslösung um den AP aufrechtzuerhalten bis ich einen Fix für mein Problem gefunden hab. Den mach ich aus, damit ich mit dem aufgehangenen AP herumexperimentieren kann.

--- [2017-08-31 21:16 CEST] Automatisch zusammengeführter Beitrag ---

AP ist im aufgehangenen Zustand noch in der Lage ein iwlist scan durchzuführen. dafuq
 
  • Thread Starter Thread Starter
  • #14
Noch ein Anhang: ich hab jetzt einfach ein uraltes Handy meinerseits an den AP angeschlossen, und mit iptables komplett nur auf ping heruntergebrochen, ich lasse den cronjob einfach das handy anpingen. Trotzdem danke für die guten Ideen theSplit. :)
 
Zurück
Oben