hyperpac
Goto Top

DFÜ Verbindungsaktivität per Skript prüfen (Windows XP)

Hallo,

System ist Windows XP Prof. SP2.

Möchte gerne per Batch oder CmdLet prüfen, ob :

1.) DFÜ Verbindung gewählt (ja / nein)
2.) Host pingen, Antwort auswerten (erfolgreich / nicht erfolgreich)

bei 1.) nein - DFÜ Verbindung wählen
bei 2.) nicht erfolgreich - DFÜ Verbindung trennen und erneut wählen

Jemand eine Idee wie man das machen kann ?

RASDIAL lässt mich ja wählen, aber auch den Status abzufragen ?

danke

mfg
Sebastian

Content-Key: 48236

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

Printed on: April 23, 2024 at 22:04 o'clock

Member: Dani
Dani Jan 08, 2007 at 18:02:11 (UTC)
Goto Top
Hi,
also ich habs. Leider gibt es Probleme mit dem "break". Daher könntest du mal "Biber" fragen, ob er mein Script verbessert!

@ECHO off

SET dfue=DER NAME DEINER DFÜ
SET host=DEIN HOST, DEN DU PINGEN MÖCHTEST

::_berpr³ft, ob eine Verbindung steht
FOR /f "skip=1 delims=." %%i IN ('rasdial') DO (  
	SET connect=%%i
	XXX
)


FOR /f %%i IN ('PING %host% ^|find "Antwort"') DO SET ok=%%i  

IF NOT "%ok%" == "Antwort" (  
	RASDIAL "%Dfue%" /disconnect  
	RASDIAL ""%Dfue%""  
)
Viel Spaß damit! Vielleicht kommst selber auf die Lösung...

*edit*
Auf den Hinweis von Biberach (thx) habe ich das "break" entfernt. Stattdessen einen Platzhalter "xxx" eingefügt. Meine Idee ist / war dass die Schleife nur 1x durchlaufen wird, da sonst in der Variable "Der Befehl....". Und das wäre sch.


Gruß
Dani
Member: Biber
Biber Jan 08, 2007 at 18:48:01 (UTC)
Goto Top
@Dani

Weil es mir ja schon mehrfach aufgefallen ist:
Der Befehl BREAK ist absolut überflüssig und kann gefahrlos entsorgt werden.

Weder würde eine einfache FOR-Schleife am CMD-Prompt deswegen vorzeitig abbrechen noch eine FOR/F-Anweisung.
>for %i in (1 2 3 4 5 6 7)  do set /a "%i*7" & break  
>for /f %i in (irgendein.txt)  do @(echo %i) & break
Beide Zeilen liefern mit oder ohne BREAK das gleiche Ergebnis.
M$ meint unter BREAK /? dazu:
Dieser Befehl ist nur aus Kompatibilitätsgründen existent. Er hat keinen
Effekt unter Windows XP.

Ist also genauso überflüssig wie ein"ck" im Wort "Haken" beispielsweise.

Grüße
Biber

[Auch ein Edit]
Z.B ginge es (ungetestet) so sinngemäß:
FOR /f "skip=1 delims=." %%i IN ('rasdial') DO if not defined connect  SET connect=%%i  
P.S. Wieso "Biberach"? Bin ich ein Schwabe?
[/Auch ein Edit]
Member: hyperpac
hyperpac Jan 08, 2007 at 19:31:24 (UTC)
Goto Top
Sehr cool,

vielen Dank. Ich werde das gleich mal testen und dann nochmal schreiben, ob es nun genau das tut was ich mir vorgestellt habe.

Sieht aber schon mal gut aus face-smile

danke !!!

mfg
Sebastian
Member: Dani
Dani Jan 08, 2007 at 19:37:19 (UTC)
Goto Top
Hi,
so hier die "Final" Version:

@ECHO off

SET dfue=DER NAME DEINER DFÜ
SET host=DEIN HOST, DEN DU PINGEN MÖCHTEST

::_berpr³ft, ob eine Verbindung steht
FOR /f "skip=1 delims=." %%i IN ('rasdial') DO IF NOT defined connect SET connect=%%i  

::Überpürft, ob der ping erfolgreich wahr
FOR /f %%i IN ('PING %host% ^|find "Antwort"') DO SET ok=%%i  

IF NOT "%ok%" == "Antwort" (  
	RASDIAL "%Dfue%" /disconnect  
	RASDIAL ""%Dfue%""  
)
Vielen Dank an Biber, der wieder einmal ein Script perfekt gemacht hat! face-smile


Gruß
Dani
Member: hyperpac
hyperpac Jan 22, 2007 at 15:21:18 (UTC)
Goto Top
Hey,

also generell kann man erstmal sagen, dass das Script so funktioniert.

Leider habe ich ein Problem mit rasdial. Das will immer Benutzername und Kennwort haben, obwohl die in der DFÜ hinterlegt. Einen ähnlichen Thread gibbets ja hier schon, aber leider gibbets dort nur unzureichende Workarounds. Weil Benutzername & Pwd im Script hinterlegen ist mir ganz und gar nicht sympathisch.

Vielleicht hat jemand noch eine bessere Lösung...

danke