wwacker
Goto Top

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

Content-Key: 41310

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

Printed on: April 18, 2024 at 11:04 o'clock

Member: Biber
Biber Oct 03, 2006 at 10:20:09 (UTC)
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
Member: wwacker
wwacker Oct 03, 2006 at 13:55:25 (UTC)
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
Member: Biber
Biber Oct 03, 2006 at 15:06:58 (UTC)
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
Member: wwacker
wwacker Oct 03, 2006 at 16:04:19 (UTC)
Goto Top
Hallo Biber,

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

Gruß

Wilfried
Member: Biber
Biber Oct 05, 2006 at 17:38:14 (UTC)
Goto Top
Klappt es denn, wwacker?
Können wir den Beitrag schließen oder wartest Du noch Antworten ab?

Gruß
Biber