Als Hobbyprogrammierer und ehemaliger Systemadministrator bin ich begeisterter Fan von kleinen Tools mit denen sich wiederkehrende Aufgaben von automatisch erledigen lassen. Ich staune immer wieder wie umfassend bereits die Möglichkeiten von Batchdatei sind. Ohne zusätzliche Software und Programmierkenntnisse lassen sich auch komplex erscheinende Aufgaben erledigen.

Problem:  Automatisches Setzen einer Route bei wechselndem Gateway und wechselnder Zieladresse.

Auf Deutsch: Sie wollen bestimmen welche Internetverbindung für bestimmte Webseiten oder Ziel-IPs genutzt werden?

Lösung: Die im folgenden beschriebene Batchdatei.

echo off

Schaltet die Bildschirmausgabe ab

chdir C:\Test\

Setzt den aktuellen Pfad und bestimmt in welchem Ordner die temporär erzeugten Dateien gespeichert werden.

set dns=%beispiel.dyndns.org

Setzt den Wert für die Variable dns auf „beispiel.dyndns.org“

ping %dns% -n 1|find "[" > ip.txt

Pingt die in Variable dns abgespeicherte IP-Adressse an und speichert die Adresse in der temporären Datei ip.txt

 

 

for /F "tokens=2 delims=[]" %%i in (ip.txt) do set ip=%%i

Sucht in der temporären Datei ip.txt nach dem zweiten Token und übergibt damit die IP an die Variable %ip%

ipconfig >gateway.txt

Speichert die Ausgabe des Befehls ipconfig in der temporären Datei gateway.txt

 

ipconfig

 

for /F "skip=28 tokens=1,2 delims=:" %%i in (gateway.txt) do set gate=%%j

Sucht ab der 29.ten Zeile in der temporären Datei gateyway.txt nach der IP des Gateways

del C:\Test\gateway.txt

Löscht die temporäre Datei gateway.txt

del C:\Test\ip.txt

Löscht die temporäre Datei ip.txt

route delete %ip%

Löscht eventuell angelegte Routen zur Ziel IP

route add %ip% %gate%

Fügt eine neue Route für die Zieladresse hinzu.

 

Nach der Ausführung dieser Batchdatei laufen Anfragen an die Zieladresse beispiel.dyndns.org über den Gateway 3. Wer mehrere Gateways aufgrund mehrerer Internetverbindungen hat kann so bestimmen welche Internetverbindung für Verbindungen zur Zieladresse beispiel.dyndns.org genutzt werden soll.

 

Beispiel: Man befindet sich beim Kunden und arbeitet in dessen Netzwerk. Verbindungen zur eigenen Firma sollen allerdings über die im Notebook eingebaute UMTS-Karte laufen. So bekommt der Kunde keinen unnötigen Traffic und eventuell beim Kunden gesperrte Ports (VPN usw) werden umgangen.

 

Anmerkung:

Bei meinem Notebook sind drei Netzwerkadapter enthalten. Ein Netzwerkanschluss, ein WLAN-Adapter und ein interner UMTS Adapter. Ich lese daher mit meiner Batch das Gateway des dritten Adapters aus. Bei Bedarf läßt sich dies anpassen indem der Wert hinter dem Befehl Skip geändert wird. Skip=28 sorgt dafür, das die ersten 28 Zeilen der temporären datei gateway.txt beim auslesen ignoriert werden.

 

Hier nochmal die Batchdatei ohne Kommentare:

 

echo off

chdir C:\Test\

set dns=%beispiel.dyndns.org

ping %dns% -n 1|find "[" > ip.txt

for /F "tokens=2 delims=[]" %%i in (ip.txt) do set ip=%%i

ipconfig >gateway.txt

for /F "skip=28 tokens=1,2 delims=:" %%i in (gateway.txt) do set gate=%%j

del C:\Test\gateway.txt

del C:\Test\ip.txt

route delete %ip%

route add %ip% %gate%

 

Die Batchdatei kann natürlich nach belieben abgeändert werden ...

 

 

Teilen