wwacker

Eine Route in Abhängigkeit von einer zugewiesenen IP-Adresse per Batch eintragen

Hallo,

kann mir jemand beim Programmieren einer Batch-Datei zur abfrage einer IP-Adresse und setzen einer Route helfen?

Konkret:
Habe ein VPN welches vom VPN-Server eine dynamische Adresse eines C-Netzes zugewisesen bekommt.
(10.221.38.x). (x kann variieren)
Nun will ich herausfinden, welche Adresse an der Stelle x steht und daraufhin eine Route setzen der Art:
route add 10.0.1.0 MASK 255.255.255.0 10.221.38.x

Habe zwar einiges gefunden, bin aber nicht so fit in Batch-Programmierung, dies umzusetzen.

Würde mich riesig über eine Lösung freuen.

Kann mir dann noch jemand sagen, ob ich diesen Batch nach erfolgreichem VPN-Aufbau automatisch starten kann?
(VPN wird unter WinXP zu einem VPN-Server aufgebaut)

MfG

Wilfried Wacker
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 41310

Url: https://administrator.de/forum/eine-route-in-abhaengigkeit-von-einer-zugewiesenen-ip-adresse-per-batch-eintragen-41310.html

Ausgedruckt am: 20.05.2025 um 07:05 Uhr

Biber
Biber 03.10.2006 um 12:20:09 Uhr
Goto Top
Moin wwacker,

eine Möglichkeit zum Abfragen der (eigenen) IP-Adresse mit Bordmitteln ist das Zerlegen der "ipconfig"-Ausgabe in einer FOR/F ..IN..DO-Anweisung.

Dazu wird von dieser Ausgabe nur eine Zeile benötigt (die, die den Text "Ip-Adresse. . . . .... : 10.221.38.x") enthält.
Und diese Zeile wiederum wird in Tokens, in "Satzteile" bei einem vorgegebenen Trennzeichen zerlegt.
Wenn Trennzeichen gleich ":" wäre, dann:

:: ------ snipp GetMyIp.bat
@for /f "delims=: tokens=2" %%i in ('ipconfig^|find "IP-Ad"') do @set myIp=%%i  

... würde die Variable %myIp% auf " 10.221.38.xxx" setzen.
Diesen %myIP%-Wert könntest Du im Batch noch weiter zerlegen:
@for /f "delims=. tokens=4" %%i in ("%myIp%") do @set "myIPLastOctet=%%i"  

[Würde ergeben: "myIPLastOctet=134" oder ähnliches.]

Somit hättest Du als Varianten für Deinen SetMyRoute.bat:
:: ------ snipp SetMyRouteA.bat
@for /f "delims=: tokens=2" %%i in ('ipconfig^|find "IP-Ad"') do @set myIp=%%i  
@for /f "delims=. tokens=4" %%i in ("%myIp%") do @set "myIPLastOctet=%%i"  
@route add 10.0.1.0 MASK 255.255.255.0 10.221.38.%myIPLastOctet%

-oder, falls das Aufdröseln der IP in Octets keinen weiteren sittlichen Nährwert hat:
:: ------ snipp SetMyRouteB.bat
@for /f "delims=: tokens=2" %%i in ('ipconfig^|find "IP-Ad"') do @route add 10.0.1.0 MASK 255.255.255.0 %%i  

Gruß
Biber
wwacker
wwacker 03.10.2006 um 15:55:25 Uhr
Goto Top
Hallo Biber,

vielen Dank für deine Hilfe.
Jetzt habe ich noch ein Problem.
Der Rechner verfügt über mehr als 1 Netzwerkkarte.
Somit werden verschiedene IP-Adressen von ipconfig zurück gegeben.
Ich benötige konkret die, welche mit 10.221.38 beginnt.
Wenn ich es richtig verstanden habe, muß somit bei der Suche anstelle von "IP-Adr" wohl 10.221.38 angegeben werden.
Wie aber lauten dann die andren Parameter. so dass das letzte Oktet in die Variable gespeichert wird?

Würde mich über deine Hilfe freuen.

MfG

Wilfried
Biber
Biber 03.10.2006 um 17:06:58 Uhr
Goto Top
Moin wwacker,

wie geschrieben - der erste Schritt wäre ja, aus der "ipconfig"-Ausgabe die eine relevante Zeile herauszufieseln.
Das kannst Du ja auch mit zwei FIND-Anweisungen machen, wenn Du "IP-Ad" und "10.221.38" suchst:
:: ------ snipp SetMyRouteC.bat
@for /f "delims=: tokens=2" %%i in ('ipconfig^|find "IP-Ad" ^|find "10.221.38"') do @(  
              route add 10.0.1.0 MASK 255.255.255.0 %%i
)
[ oder, wenn Du nur das letzte Oktett herausholen willst, dann weiter wie oben mit einer zweiten FOR /F-Anweisung.]

Gruß Biber
wwacker
wwacker 03.10.2006 um 18:04:19 Uhr
Goto Top
Hallo Biber,

vielen Dank für die schnelle und kompetente Hilfe.
Werde es gleich morgen ausprobieren.

Gruß

Wilfried
Biber
Biber 05.10.2006 um 19:38:14 Uhr
Goto Top
Klappt es denn, wwacker?
Können wir den Beitrag schließen oder wartest Du noch Antworten ab?

Gruß
Biber