Wer von Windows aus regelmäßig Zugriff auf Netzlaufwerke von nicht permanent verfügbaren oder restriktiv konfigurierten Linux-Servern benötigt, muss Geduld haben. Oder eine kleine Batch-Datei.
Der Dateimanager von Windows ist ein Universalgenie.
Ich kann damit nicht nur die Laufwerke des PCs ansehen.
Durch Eingabe eines Verbindungsprotokolls kann ich damit via ftp:
direkt auf Webserver zugreifen.
Oder via \UNC-Pfad
direkt auf Netzlaufwerke. Der Erfolg von letzterm hängt jedoch an verschiedenen Faktoren, die ich im Einzelnen noch nicht ergründet habe (bzw. keine Lust drauf hatte).
Soweit man Zugriffsrechte hat, funktioniert das Verbinden von Netzlaufwerken ziemlich zuverlässig über den Explorer.
- Auf
Dieser PC
gehen - Explorer-Menü (Pfeilchen oben rechts neben dem Fragezeichen) öffnen, wenn nicht sowieso auf
Netzlaufwerk verbinden
anklicken und die gewünschten Angaben machen
Wenn man das öfters benötigt, klickt man das Verbindung bei Anmeldung wiederherstellen
an.
Klar. Was jedoch dazu führen kann, dass ab dann Explorer-Aufrufe sehr zäh werden,
wenn das Netzlaufwerk nicht erreichbar ist.
Denn der Explorer will natürlich alles anzeigen, was man dafür ausgewählt hat.
Weil Netzwerkverbindungen schon mal wacklig sein können, probiert er das eine ganze Weile,
bevor er aufgibt. So lange er das probiert, geht nichts im Explorer. Jedes Mal.
Also lässt man das mit dem wieder anmelden. Allerdings ist es natürlich nervig,
wenn jedes Mal mit der Maus Verbindungen wieder hergestellt oder getrennt werden müssen.
Dafür kann man dann auf die Konsole zugreifen, die unter Windows gern vergessen wird.
Da lässt sich mit dem Befehl net use
das Erforderliche fix eintippen, statt Mausgeschubse.
Weil das auf Dauer aber ebenfalls nervt, kann man sich mit einer kleinen Batch-Datei helfen,
die prüft, ob ein Laufwerk verbunden ist. Wenn ja, wird es getrennt, wenn nein, wird es
verbunden. Das lässt sich mit der Abfrage des erforderlichen Benutzernamens und Passwort
koppeln.
Benutzernamen und Passworte gehören KEINESFALLS als Klartext in Batch-Dateien!
Das kann dann z.B. so aussehen:
@echo off
if exist w:\nul goto disconnect
net use /P:no
set /P user=Benutzername:
net use w: [netzwerkpfad] * /user:%user%
net use z: [netzwerkpfad]
echo. Netzlaufwerke verbunden
goto done
:disconnect
net use w: /delete
net use z: /delete
echo. Netzlaufwerke getrennt
:done
Damit eine Batch-Datei das an- und abmelden erledigt, ist am Anfang mit if exist
eine Abfrage eingebaut. Sie schaut einfach nach, ob das Laufwerk w:
existiert. Es sollte natürlich eins abgefragt werden, dass der Batch einhängt (s.u.). Wenn ja, wird zur Marke :disconnect
gesprungen, die angemeldeten Laufwerke werden abgemeldet. Andernfalls wird angemeldet und das abmelden mit goto done
übersprungen.
Damit die Netzlaufwerke nicht dauerhaft („persistent“) verbunden werden, ist net use /P:no
eingefügt. Alle nachfolgenden Anmeldungen gelten damit höchstens bis zum nächsten Login. Der set /P
-Befehl fragt die Variable user
ab und zeigt dafür den Text nach dem Gleichheitszeichen an. Der wird dann später mit %user%
übergeben. Das Passwort fragt die erste net use
Anweisung ab, weil dort ein <em>
statt des Passworts eingefügt ist. Für weitere Pfade wird Benutzer und Passwort weiter verwendet.
Daher ist eine wiederholte Angabe nicht mehr nötig.
Vorausgesetzt, Nutzer und Passwort bleiben gleich.
Bei der Passworteingabe rührt sich in der Kommandozeile nichts. Die üblichen Sternchen in Eingabefeldern funktionieren da nicht, deshalb bleibt der Cursor einfach stehen. Weil das unter Windows eher unüblich ist, kann das beim ersten Mal irritieren.
Diese Datei auf dem Desktop verlinkt und schon ist das ein- und aushängen von Netzlaufwerken mit einem Klick erledigt.
Fehlermeldungen?
Windows ist zickig, wenn es bereits eine Netzwerkverbindung gibt, die einen gleichlautenden Pfad hat. Das ist nicht zwingend transparent, denn dieser Pfad muss keinem Laufwerk zugeordnet sein. Hier hilft ein net use
auf der Kommandozeile. Wenn dort irgendwas gelistet wird, auch wenn getrennt dran steht, sollte man sich diesen Pfad mal ansehen.
Mit net use [pfad] /delete
lassen sich mögliche Störenfriede entsorgen.
Ein Rundumschlag net use <em> /delete
trennt alle Netzverbindungen (kurz nachdenken!). Spätestens dann sollten keine Fehlermeldungen mehr kommen. Falls doch, gibt es ein grundlegend anderes Problem.
Fehlermeldungen lassen sich ebenfalls in einer Batch-Datei einfangen.
Das macht es aber deutlich aufwändiger und ist die Behandlung eines Sonderfalls, der normalerweise nicht auftreten sollte.
Weil sich nicht alle Eventualitäten berücksichtigen oder gar direkt lösen lassen, lese ich mir — ggf. — die Fehlermeldung durch und treffe darauf basierend Entscheidungen.