Netzwerk
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
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 ...