Hallo zusammen,
da ich meine Quellen in XBMC per verbundenem Netzleufwerk (Z:\) einbinde bin ich über ein "kleines" Problem gestoßen.
Wenn Windows hochfährt und der Server noch aus ist mappt er zwar die Netzlaufwerke, diese sind dann aber logischerweise nich online und haben im Windows Explorer ein kleines rotes x.
Wenn dann der Server im nachhinein online geht merkt Windows und alle anderen Programme die auf Z:\ zugreifen wollen erst, dass das Netzlaufwerk online ist, wenn man im Windows Explorer das Laufwerk doppelt anklickt!
Stellt für mich ein Problem dar, weil ich bei einem HTPC nicht erst auf die Windowsoberfläche bzw den Windows Explorer zugreifen möchte.
Nun habe ich mir eine Batchdatei gebastelt die das ganze übernimmt.
@echo off
:start
echo Server ...
ping -n 2 192.168.0.250 | find "TTL" || goto fehler
goto control
:fehler
echo offline.
net use /delete z: >nul
timeout /T 5
:ping
cls
echo Server ...
ping -n 2 192.168.0.250 | find "TTL" || goto wait
goto control
:wait
echo offline.
timeout /T 10
cls
goto ping
:control
echo online.
echo Sambadienst ...
if exist \\192.168.0.250\David goto online
goto wait
:online
echo online.
:next
if exist z: goto verbundenz
:verbinden
echo Laufwerk wird verbunden ...
if not exist z: net use z: \\192.168.0.250\Medien >nul
echo Laufwerk verbunden.
goto loop
:verbundenz
echo z: ist bereits verbunden
goto loop
:loop
echo Server online.
timeout /T 30
cls
ping -n 2 192.168.0.250 | find "TTL" || goto remove
goto loop
:remove
echo Server offline
net use /delete y: >nul
net use /delete z: >nul
echo Laufwerk z entfernt
goto ping
:end
echo.
echo Aufgabe beendet.
echo.
rem --- um Pingschleife zum Server zu aktivieren LOOP nutzen ---
echo Fenster wird in 10 sec geschlossen
timeout /T 10
exit
Alles anzeigen
Der Ablauf:
- Die lokale Adresse des Servers wird angepingt
- wenn dabei ein Fehler (Server offline) auftritt wird 10 sec gewartet und es erneut probiert - solange bis ein "positiver" ping erfolge
- dann wird geprüft ob der Sambadienst auf dem Server läuft (ist eine einfache Anfrage auf ein Verzeichnis - if exist \\192.168.0.250\Medien )
- wenn nicht dann gehts von ganz oben wieder von vorne los bis das Verzeichnis gefunden wird
- dann wird überprüft ob das Laufwerke schon gemappt ist
- wenn ja spingt er zu "loop" wo regelmäßig getestet wird ob der Server noch online ist (ping)
- wenn nicht mappt er das Laufwerk und springt erst dann zu "loop"
- sobald der Server offline geht wird unter "remove" das Laufwerk getrennt und es geht wieder von ganz oben weiter
zwischendurch kommen auch noch ein paar Rückmeldungen.
Leider habe ich ein Phänomen beim Ping festgestellt. Wenn ich die feste IP des Servers anpinge, während er aus ist, bekomme ich ein positives Ergebnis -> (0% Verlust), deshalb habe ich den Domännamen angegeben. Funktioniert aber auch nicht immer Reibungslos.
Hat dafür jemand eine Lösung?!
Ping wird ausgeführt für 192.168.0.250 mit 32 Bytes Daten:
ZitatAntwort von 192.168.0.2: Zielhost nicht erreichbar.
Antwort von 192.168.0.2: Zielhost nicht erreichbar.
Antwort von 192.168.0.2: Zielhost nicht erreichbar.
Antwort von 192.168.0.2: Zielhost nicht erreichbar.Ping-Statistik für 192.168.0.250:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
Ausserdem würde ich mich sehr über ein VBS Script freuen, welches genau das was die Batch macht übernimmt.
Kann mir da einer von euch weiterhelfen?
(Ich weiß es ist eigentlich kein XBMC Thema, aber hier war ich immer gut Aufgehoben mit meinen Fragen, deshalb musste ich es einfach mal probieren)
Ich bitte ausdrücklich um Verbesserungsvorschläge etc.
David
Edit 12.04.2013:
Habe mal den Stand meiner Batch-Datei aktualisiert.