knoopoxx
Goto Top

Status des netzwerkadapters überwachen

hallo!

ich hab das problem, dass bei meinem wlan die verbindung zum router hin und wieder abreisst. das netzwerksymbol unten rechts im tray ist dann mit einem roten kreuz versehen. der netzwerkadapter macht auch keine anstalten, sich neu zu verbindungen, obwohl die einstellung gesetzt ist.

meine lösung war bisher immer in einem script per

c:\devcon\i386\devcon.exe restart "USB\Vid_0df6&Pid_9071"

den kompletten wlan-adapter neu zu starten, wenn ich einen abriss der verbindung bemerkt habe. wenn ich aber größere downloads habe, will ich nicht immer am rechner sitzen müssen, um die connection zu überprüfen und ggf. neu zu starten.

wie kann ich das per batch lösen???


besten dank schon einmal im vorraus!!!

Content-Key: 150563

Url: https://administrator.de/contentid/150563

Printed on: April 24, 2024 at 19:04 o'clock

Member: Belearas
Belearas Sep 08, 2010 at 04:29:00 (UTC)
Goto Top
Hi!

Warum versucht du nicht dein Problem anders zu lösen? Warum bricht der Sticky ab? Oder ist es der Router? Zu weit weg? Andere Netze?

Ich würde da mal den Ansatz machen, eine batch dafür zu basteln weil das Internet ausfällt wäre mehr als eine
"bauer" lösung. (würde man bei uns sagen...)

lG
Member: knoopoxx
knoopoxx Sep 08, 2010 at 17:36:21 (UTC)
Goto Top
ich hab schon alles ausprobiert, möchte mir aber keinen neuen router kaufen.

dann mach ichs selber...

kann mir jmd sagen, ob und wie man den rückgabewert eines programmes (in diesem fall devcon), einer variable zuweisen kann? ist das möglich

weil dann kann ich mit hilfe von for und if nen einfaches script bauen, dass meinen adapter bei einem bestimmten status neustartet.
Member: Friemler
Friemler Sep 10, 2010 at 17:34:40 (UTC)
Goto Top
Hallo knoopoxx,

ich würde Dir auch eher zu dem Vorgehen, was Belearas vorgeschlagen hat, raten. Es muss nicht der Router sein, könnte auch der Stick sein. Oder ein Nachbar von Dir hat ein WLAN, dessen Funkkanal weniger als 5 Kanäle Abstand zu Deinem WLAN hat. Das kannst Du z.B. mit WLAN-Info oder NetStumbler herausfinden.

Hier aber trotzdem ein Schnipsel, der den Status des Netzwerkadapters überwacht und ihn ggf. neu startet:
@echo off

:MonitorNIC
for /f "skip=1" %%i in ('wmic nic where "PNPDeviceID like 'USB\\Vid_0DF6&Pid_9071%%' and NetConnectionStatus='7'" get PNPDeviceID 2^>NUL ^| findstr /b /v $') do (  
  c:\devcon\i386\devcon.exe restart "@%%i"  
  ping -n 10 127.0.0.1 > NUL
)
goto :MonitorNIC

Um den Status des Netzwerkadapters zu überwachen wird die Windows Management Instrumentation Console (WMIC) benutzt. Aus diesem Grund läuft das Skript nicht unter den Home-Versionen von Windows!

Für den Alias NIC werden die Felder PNPDeviceID und NetConnectionStatus abgefragt. Für den Adapter, bei dem die PNPDeviceID mit USB\Vid_0DF6&Pid_9071 anfängt (% ist ein Wildcard in der Abfragesyntax von WMIC und muss bei der Übergabe im Batchfile verdoppelt werden, der Backslash zwischen USB und Vid muss laut WMIC-Syntax auch verdoppelt werden) und NetConnectionStatus den Wert 7 hat (nicht verbunden), wird das Feld PNPDeviceID zurückgeliefert.

Am Kommandoprompt eingegeben sieht das für meine Netzwerkkarte so aus:
C:\>wmic nic where "PNPDeviceID like 'PCI\\Ven_1106&Dev_3065%' and NetConnectionStatus='7'" get PNPDeviceID  
PNPDeviceID
PCI\VEN_1106&DEV_3065&SUBSYS_80ED1043&REV_7C\3&267A616A&0&90


C:\>

Durch "skip=1" hinter FOR /F wird die erste Zeile der Ausgabe (im Beispiel Zeile 2, also "PNPDeviceID") nicht ausgegeben. Die zwei Leerzeilen nach der Device-ID (im Beispiel Zeile 4 u. 5) werden mit ^|FINDSTR /b /v $ herausgefiltert (ist bei Windows XP nicht notwendig, aber bei Windows 7, Windows Vista ungetestet). Der Befehl zeigt nur Zeilen an, in denen am Zeilenanfang (/b) KEIN (/v) Zeilenende ($) vorkommt, also nur Zeilen mit Inhalt.

Die Ausgabe wird aber nicht angezeigt, sondern durch die FOR-/F-Schleife der Laufvariablen %%i zugewiesen (womit Deine Frage nach dem Zuweisen der Ausgabe eines Befehls an eine Variable beantwortet wäre). Damit wird in der Schleife DEVCON RESTART aufgerufen.

Wenn von WMIC kein Netzwerkadapter, auf den die Suchkriterien zutreffen, gefunden wird, wird auf dem Standardfehlerkanal 2 die Meldung "Keine Instanzen verfügbar." ausgegeben. Damit in diesem Fall der DEVCON-Befehl in der Schleife nicht als DEVCON RESTART "@Keine Instanzen verfügbar." ausgeführt wird, wird im Kopf der FOR-Schleife durch 2^>NUL der Standardfehlerkanal ins Nirwana umgeleitet. Die Laufvariable %%i bekommt somit keinen Wert zugewiesen und der Schleifenkörper und damit der DEVCON-Befehl wird garnicht ausgeführt.

Der PING-Befehl in der FOR-Schleife sorgt durch -n 10 dafür, das nach dem Neustart des Netzwerkadapters 10 Sekunden gewartet wird, bevor die Schleife verlassen wird. Teste diesen Wert bei Dir und erhöhe ihn ggf. Durch >NUL wird die Ausgabe von PING nicht angezeigt.

Nach der FOR-Schleife sorgt der GOTO-Befehl dafür, das der ganze Ablauf von vorne beginnt.

Gruß
Friemler