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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 48236
Url: https://administrator.de/contentid/48236
Ausgedruckt am: 14.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
also ich habs. Leider gibt es Probleme mit dem "break". Daher könntest du mal "Biber" fragen, ob er mein Script verbessert!
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
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%""
)
*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
@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.
Beide Zeilen liefern mit oder ohne BREAK das gleiche Ergebnis.
M$ meint unter BREAK /? dazu:
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äß:
P.S. Wieso "Biberach"? Bin ich ein Schwabe?
[/Auch ein Edit]
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
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
[/Auch ein Edit]
Hi,
so hier die "Final" Version:
Vielen Dank an Biber, der wieder einmal ein Script perfekt gemacht hat!
Gruß
Dani
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%""
)
Gruß
Dani