Schneller einsatzbereit
Digitale Nomaden mit Windows-Notebooks mĂĽssen in wechselnden Netzwerkumgebungen jedes Mal etliche Schritte abarbeiten, bis alle LAN-Einstellungen passen. Mit Bordmitteln und einem pfiffigen Batch-Skript reduziert sich der Aufwand auf einen Klick.
- Johannes Endres
Digitale Nomaden mit Windows-Notebooks haben es schwer: Bei häufig wechselnden Netzwerkumgebungen stehen jedes Mal etliche Klicks und Tastendrücke an, bis alle LAN-Einstellungen passen. Mit Bordmitteln und einem pfiffigen Batch-Skript reduziert sich der Aufwand auf einen Klick.
Die Windows-Netzwerkeinstellungen zu ändern ist ein lästiges Unterfangen: In einen Account mit Administratorrechten wechseln, die Netzwerkeinstellungen aufrufen, und ein gutes Dutzend Klicks später ist alles richtig eingestellt. Die vorherige Konfiguration geht dabei verloren, sodass das Ganze bei jedem Wechsel in ein anderes Netzwerk wieder sein muss. Wer mit dem Notebook viel unterwegs ist, lernt den Umstand zu hassen. Sicher, es gibt die "Alternative Konfiguration" auf feste Adressen, wenn TCP/IP auf Automatik eingestellt ist. Aber erstens funktioniert das nur mit einem einzigen Satz von festen Adressen und zweitens dauert es ewig, bis Windows sich dazu durchringt, sie auch zu benutzen. Denn das tut es nur, wenn per DHCP keine Konfiguration zu bekommen ist, also ein Timeout abgelaufen ist. Das ist zwar sinnvoll, zerrt aber an den Nerven.
Es gibt einige Programme, die beim Umschalten helfen (siehe Liste am Artikelende). Doch die XP-Bordmittel genügen vollkommen, um komfortabel mit einem Klick die richtige Konfiguration auszuwählen. Das kostet nichts und braucht keine automatisch startenden Hintergrundprogramme.
Automat
Das zentrale Programm zum Automatisieren der Netzwerkumschaltung heißt "Netzwerkbefehlsshell", kurz netsh.exe. Es erfordert Schreibrechte auf die Netzwerkkonfiguration (siehe Kasten). Ohne Parameter gestartet, erwartet netsh Kommandozeilen und zeigt oder ändert die Einstellungen entsprechend. Wer damit experimentieren möchte, kann mit dem Befehl "help" Hilfe anfordern. Einen einzelnen Befehl nimmt netsh auch auf der Kommandozeile an. Für das Sichern aller TCP/IP-Einstellungen in die Datei LAN.netsh genügt daher die Zeile
netsh interface ip dump >LAN.netsh
Um diesen Zustand wieder herzustellen, verfĂĽttert man die so erzeugte Datei an netsh:
netsh -f LAN.netsh
Ohne Abmelden oder Neustart sind dann wieder die zuvor gesicherten TCP/IP-Einstellungen aktiv. Hat man so auf die automatische Konfiguration per DHCP umgeschaltet, dauert es noch einige Sekunden, bis Windows sich alle Einstellungen besorgt hat.
Mit Windows-Bordmitteln lässt sich das Umschalten zwischen verschiedenen Netzwerkkonfigurationen auf wenige Klicks vereinfachen.
Die Dateierweiterung .netsh ist willkürlich gewählt. Wir stellen auf unserem Web-Server eine Batch-Datei zur Verfügung, die alle TCP/IP-Einstellungen sichert und die Erweiterung so mit netsh verknüpft, dass ein Doppelklick auf eine .netsh-Datei genügt, um TCP/IP in den zuvor gesicherten Zustand zu versetzen.
Oft unterscheiden sich Netzwerke auch in dem, was Windows als "Interneteinstellungen" zusammenfasst, also vor allem den Proxy-Einstellungen. Die könnte man aus der Registry in eine zweite Datei exportieren und getrennt wieder importieren – und sich damit bei jedem Umschalten zusätzliches Geklicke einhandeln.
|
Die Lösung liegt auf der Hand, nämlich ein kleines Skript, das alles einliest. Damit kämen schon drei Dateien zusammen: das Skript, netsh-Input und Proxy-Konfiguration. Wenn eine verloren geht, klappt das Umschalten nicht mehr. Doch mit ein wenig Batch-Magie lässt sich alles in einem Skript zusammenfassen. Das hat den zusätzlichen Vorteil, dass sich die Netzwerkeinstellungen sogar auf einem anderen Rechner klonen lassen, indem der Admin einfach die alles enthaltende Skript-Datei überträgt und aufruft. Als einzige Voraussetzung müssen die Netzwerkverbindungen auf beiden PCs gleich heißen. Das ist aber normalerweise der Fall, denn kaum jemand gibt seiner "LAN-Verbindung" oder der "Drahtlosen Netzwerkverbindung" einen anderen Namen.
Unser Skript "Netzwerkkonfiguration sichern.cmd" steht ebenfalls zum Download zur VerfĂĽgung. Auf Doppelklick fragt es nach einem Namen fĂĽr die aktuell eingerichtete Konfiguration und erstellt dann eine neue Batch-Datei, die beim Aufruf die Einstellungen wiederherstellt, die beim Erstellen aktiv waren. Dabei berĂĽcksichtigt es die TCP/IP-Konfiguration aller Netzwerkschnittstellen und die Internet-Explorer-Proxy-Konfiguration.
Die Skripte mit den Einstellungen schreibt das "Sichern"-Skript in das Verzeichnis, in dem es selbst liegt. Je nach persönlicher Vorliebe kopieren Sie es also einfach auf den Desktop, in einen Ordner des Startmenüs (das Skript selbst, keine Verknüpfung) oder in ein gewöhnliches Verzeichnis. Um dann mit einem Klick umzuschalten, richten Sie diesen Ordner als "Symbolleiste" in der Taskleiste ein. Dazu klicken Sie rechts auf die Taskleiste, wählen "Symbolleisten" und "Neue Symbolleiste" und klicken sich dann zu dem Ordner durch, der das Skript enthält. Administratoren von Notebooks spielen weniger bewanderten Mitarbeitern einen Satz vorgefertigter Einstellungen auf das Notebook, aus denen diese dann unterwegs die richtige aktivieren.
Wer damit zufrieden ist, braucht nicht weiterzulesen. Auf der folgenden Seite finden Neugierige einige Erläuterungen, wie das Zusammenführen von Batch-Skript und Daten in einer Datei funktioniert. Ein eigenes Forum erlaubt zudem die Diskussion und den Erfahrungsaustausch über Erweiterungen des Skripts.
IP-Profiler
MultiNetwork Manager 8
Mobile Net Switch
SwitchPro
Netswitcher
Zauberei
Die Technik ist von Perl abgeschaut. Wenn dort ein Skript mit der optionalen __END__-Zeile endet, kann der Programmierer alle Zeilen, die danach folgen, mit einer Konstruktion wie while(<DATA>){... als Eingabe benutzen. Da der Batch-Interpreter cmd.exe diese Funktion nicht selbst anbietet, muss man sie zu FuĂź nachbauen.
|
Als Ende-Marker dient die letzte Zeile, die nur exit /b enthält. Um als Eingabe die Zeilen danach zu nutzen, muss das Skript sich selbst einlesen und dabei die Befehle bis zum Marker überspringen. Dazu eignet sich der Befehl more, der mit dem Parameter +n aufgerufen die ersten n Zeilen überspringt und den Rest ausgibt. Seinen eigenen Namen findet das Skript in der Variablen %0, am besten in der Form %~s0, also als kurzer Dateiname ohne Anführungszeichen.
Es fehlt nur noch ein Mechanismus, um die Zeilennummer automatisch herauszufinden und sie an more weiterzugeben. Der Aufruf
findstr /N /X /C:"exit /b" %~s0
sucht Zeilen, die nichts anderes enthalten (/X) als den exakten String (/C). Ohne /C wĂĽrde findstr nach "exit" oder "/b" suchen. Der Parameter /N veranlasst findstr, jeder Fundstelle die Zeilennummer voranzustellen, also zum Beispiel
17:exit /b
Die Nummer extrahiert ein for-Befehl:
for /f "delims=:" %%i in ('findstr /N /X /C:"exit /b" %~s0') do set more=+%%i
Dabei arbeitet for alle Ausgabezeilen des bekannten findstr-Befehls ab und teil sie am Doppelpunkt (delims=:). Den ersten Teil weist es der Variable %i zu. Der set-Befehl stellt der Nummer ein Plus voran und speichert sie in der Variablen more. Am Ende der for-Schleife enthält also die Variable more ein Plus gefolgt von der Zeilennummer der letzten Fundstelle aus dem findstr-Befehl.
Nun genĂĽgt der Aufruf
more %~s0 | netsh
um alle Zeilen nach dem letzten exit /b als Eingabe an netsh weiterzugeben, denn das Programm more ĂĽbernimmt automatisch den Inhalt der Variablen more auf seine Kommandozeile. Es erkennt auĂźerdem, dass seine Ausgabe nicht auf den Bildschirm geht, sondern per Pipe an ein anderes Programm und unterbricht sich daher nicht nach jeweils einer BildschirmfĂĽllung.
Im Kern besteht also ein Skript "LAN.cmd" zum Wiederherstellen der Konfiguration aus der for-Zeile, dem more-Aufruf und der Zeile exit /b. Daran hängt man mit
netsh interface ip dump >>LAN.cmd
die aktuelle TCP/IP-Konfiguration. Das ist so einfach, dass es sogar ein anderes Batch-Skript kann, nämlich das eben erwähnte "Netzwerkeinstellungen speichern.cmd".
Um wie versprochen auch die Proxy-Einstellungen zu sichern, geht es etwas weiter und schreibt hinter den netsh-Dump die Zeile "exit #netsh". Wenn das Wiederherstellungs-Skript diese Zeile später an netsh verfüttert, beendet sich dieses sofort und alle weiteren Zeilen landen im Nirwana. So können weiter Daten an das Skript angehängt werden, die netsh nicht zu sehen bekommt. Das Hash-Zeichen leitet in netsh einen Kommentar ein. Der Zusatz "#netsh" stört daher nicht, macht diese Zeile aber innerhalb des Wiederherstellungs-Skripts einmalig. Damit eignet sie sich – Sie ahnen es – wieder als Marker für den oben beschriebenen Batch-Kniff.
Hier folgen nämlich noch die Proxy-Einstellungen, die das Sicherungs-Skript aus der Registry holt und in Form einer regedit-Datei an das erzeugte Skript anhängt. Das Wiederherstellungs-Skript durchsucht sich wie beschrieben selbst nach "exit #netsh" und schreibt alles darauf folgende in eine temporäre Datei. Die fügt es mit einem regedit-Befehl in die Registry ein, und schon sind alle Proxy-Einstellungen wiederhergestellt.
Das Sicherungs-Skript lässt sich leicht anpassen, um auch andere Teile der Registry mit in die einzelnen Skripte zu schreiben. Wer also die Einstellungen anderer Browser oder E-Mail-Programme mit sichern will, muss nur den markierten Bereich aus dem Skript kopieren und an seine Bedürfnisse anpassen. (je)