Netzlaufwerke nicht verfügbar; mit rotem Kreuz gekennzeichnet

Status
Für weitere Antworten geschlossen.

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Hallo Zusammen,
ende letzten Jahres habe ich mir eine DS210+ (DSM3.0) zugelegt und diese mit einer WD2002FYPS bestückt. Eine zweite kommt noch später dazu um zu spiegeln.

Zu meinem Netzwerk:
  • Fritz!7270 angeschlossen an ein KabelBW Modem.
  • Daran das Netgear Gigabit Switch.
  • 3 Computer sind am Netz mit je Windows 7 64bit (Family Pack) installation.
  • Ein Samsung Plasma Bildschirm.
  • Jedes Gerät im Netz hat eine feste IP.

Die DS hab ich so eingestellt, dass die DLNA aktiviert ist. Auch hab ich ein Script geschrieben, das alle 30min. die IP’s im Netz anpingt, um zu checken, ob ein Computer aktive ist. Wenn nicht wird für die DS ein Shutdown durchgeführt. Gestartet wird die DS per WOL nach dem einloggen an einem Computer über eine Batchdatei im Autostart.

Zu meinem Konzept, möchte ich alle unsere Daten auf der DS abspeichern. D.h. in den Mediaordnern (DLNA) habe ich meine MP3 Sammlung(Ordner: music), Videosammlung (Ordner: video) und die Bildersammlung (Ordner: photo). Sonstige Daten wie iTune Library, Outlook 2007 Datenbank... in einem selbst kreierten Ordner auf der DS wo auch alle User eingerichtet sind und die entsprechenden Berechtigungen haben.

So jetzt zu meinem eigentlichen Problem:
Wenn ich nun den ersten Computer im Netz starte und die DS gebootet wird prüft mein System (Win7) nach dem einloggen die Netzlaufwerke. Natürlich findet er diese noch nicht, weil die DS noch am booten ist. Die verbundenen Netzlaufwerke werden mit einem roten Kreuz gekenzeichnet. Wenn ich jetzt nach dem booten der DS eine Software (iTune, Outlook...) starte, die ein entsprechendes File aus dem Netz benötigen, kommt ein Fehler, dass das File nicht gefunden wurde. Wenn ich aber im Explore auf das LW klicke verschwindet das rote Kreuz und die Daten sind verfügbar. Auch kann ich dann die entsprehenden Programme starten die sich beim Programmstart die Files aus dem Netz beziehen.

Jetzt die Frage, kann mir da jemand helfen. Ich befürchte durch die Kennzeichnung von Windows 7 ist kein Laufwerk verfügbar. Gibt es ein Autorefresh oder ähnliches um diese Markierung nach dem booten aufzuheben,.....
Hab leider nach langem Suchen noch keine Lösung gefunden. Kann mir vorstellen, dass das Problem sicher nicht neu ist finde aber leider nichts im Netz.
Im Voraus jetzt schon vielen Dank für eine Antwort.

Gruss
Gerd

Ps.: ich hoffe, ich hab es einigermassen verständlich geschrieben.
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Es ist Dir wahrscheinlich keine grosse Hilfe, aber damit ich solche Probleme erst gar nicht habe lasse ich die DS 24x7 durchlaufen.

Liegt einfach daran, dass Windows 7 deutlich schneller bootet als die DS. Umgehen könnte mans indem man per Script ("net use" etc.) die Laufwerke von Hand einbindet wenn die DS gebootet ist. Ist dann halt nicht mehr automatisch...

gruss
dude
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Na ja - man kann ein solches Skript ja auch einfach zeitverzögert aufrufen. Ich denke, das es damit dann eigentlich funktionieren müsste...
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Oder vor dem Script erst noch prüfen ob die DS erreichbar ist. ping oder so was in der Richtung.
 

Ap0phis

Benutzer
Mitglied seit
16. Dez 2010
Beiträge
6.731
Punkte für Reaktionen
3
Punkte
158
Na die Lösung scheint ja ganz einfach, da du ja fast alles richtig machst! ;)

Die DS hab ich so eingestellt, dass die DLNA aktiviert ist. Auch hab ich ein Script geschrieben, das alle 30min. die IP’s im Netz anpingt, um zu checken, ob ein Computer aktive ist. Wenn nicht wird für die DS ein Shutdown durchgeführt.
So weit, so gut.
Gestartet wird die DS per WOL nach dem einloggen an einem Computer über eine Batchdatei im Autostart.
Auch ok, aber dann darfst du deine NetShares eben nicht quasi gleichzeitig mit dem Startkommando für die DS in Windows einbinden, sondern in dieser Batchdatei warten, bis die DS hochgefahren ist, und danach erst deine Shares mit "net share" einbinden.
 

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
erstmals dickes Lob an die Macher und Helfer dieses Forums! Hab schon viel darin rumgestöberd und hab dabei schon viel gelernt.

:) @all
vielen Dank an die schnellen Antworten und hilfreichen Tipp's!!

@Ap0phis
hab das Häckchen bei reconnect at login gemacht. D.h. ich könnte in meine WOL-Batch noch ein Net Share anhängen mit der Bedingung bis die DS ready ist? Dann muss ich wahrscheinlich mein Häckchen bei reconnect at login wieder entfernen.
Da ich nicht der Programmierer bin, kannst du mir vielleicht bei dem Batchscript auf die Sprünge helfen.

Vielen Dank an alle und weiterhin viel Erfolg.

Gruss
Gerd
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Dann zeig doch mal bitte das Skript, das momentan schon bei Dir läuft...
 

Ap0phis

Benutzer
Mitglied seit
16. Dez 2010
Beiträge
6.731
Punkte für Reaktionen
3
Punkte
158
So auf die Schnelle könnte das hier klappen:
Rich (BBCode):
set X=0
:test
set /a X+=1
if %X% gtr 5 exit
net use B: \\IP_DEINER_DS\NAME_DES_SHARES >nul
if errorlevel 1 goto :test
exit
Wobei du hinter "net use" natürlich deine Daten einträgst incl. Laufwerksbuchstaben.
Naja und klar, das Häkchen "reconnect at login" solltest du entfernen!

Bei mir dauerte jetzt gerade eine Test-Schleife ca. 50 sec bei Nichterreichbarkeit, sodass evtl. der erste Durchlauf schon reichen könnte.
 

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
@trolli
würde dir gerne mein shutdown-skript zeigen, weiss aber nicht wie ich aus dem vi-Editor (über Telnet) die Zeilen kopieren kann. Aber ich hab dieses Skript auch aus diesem Forum. Bei meiner WOL-Batch rufe ich die WOL.exe auf und dahinter die MAC.

@Ap0phis
vielen Dank für dein Hilfe! Nur dein Code ist ca. 3 sec. lang. Reicht leider nicht. Net use hab ich im cmd mal ausprobiert und funktioniert gut. Ich hab bei mir mal die Zeit gemessen und ich brauch 80sec.

Gibts da vielleicht einen Befehl bei dem man sekundengenau arbeiten kann? Ich hab gelesen es gab früher mal <wait>.

Oder ein skript bei dem er die DS mittels ping prüft, wie <jahlives> es vorgeschlagen hatte? Vielleicht in einer Schleife ständig pingen bis die DS da ist, oder ist das eine unschöne Lösung (verschlingt vielleicht zuviel Resourcen?)

Vielen Dank an alle.

Gruss
Gerd
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Ping kann man zum Warten missbrauchen:
Rich (BBCode):
ping 127.0.0.1 -n 10 -w 1000 > nul
Die Zahl hinter -n gibt die Sekunden an.
 

Ap0phis

Benutzer
Mitglied seit
16. Dez 2010
Beiträge
6.731
Punkte für Reaktionen
3
Punkte
158
Yep, mit Ping würde das gehen.

Hier der geänderte code:
Rich (BBCode):
set X=0
:test
set /a X+=1
if %X% gtr 11 exit
if %X% gtr 1 ping -n 10 localhost >nul
net use B: \\IP_DEINER_DS\NAME_DES_SHARES >nul
if errorlevel 1 goto :test
exit
Damit hättest du max. 10 x 10 sec Zeit, und wenn die DS schon laufen sollte, ist die Sache sofort erledigt.
 
Zuletzt bearbeitet:

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Hi Zusammen,
vielen Dank für die vielen Vorschläge!
Danke Ap0phis für dein Skript. Das hilft mir sicherlich weiter.
Komme aber erst heute Abend zum testen. Natürlich geb ich Euch dann auch mein Feedback.
Ich weiss jetzt wie ich meine Skript's hier rein bringen kann. Ich werde diese dann hier einfügen.
:):) :cool:
 

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Hi,
hier das versprochene Skript von meinem shutdown.sh.
Code:
#!/bin/sh

#Liste aller Hosts zum pruefen
HOSTS="192.168.X.X 192.168.X.X 192.168.X.X 192.168.X.X"

ONLINE=0

for client in $HOSTS ; do

ping -c 1 $client > /dev/null
if [ $? == 0 ]; then
ONLINE=1
fi

done

if [ $ONLINE == 0 ]; then
poweroff
fi

@Ap0phis
Den ERRORLEVEL nach dem ping verwenden, geht nicht mehr. Anscheinend hat MS das schon bei VISTA abgeschafft. Bei mir (Windows 7) gehts auf jedenfall nicht. Hab ne weile gebraucht bis ich das rausgefunden habe. Die Alternative wäre evtl. <FIND>. Dies wurde auch im Web vorgeschlagen. Hier mein Skript:
@echo off
:: DS wird Wake on LAN gestartet
:: wol.exe [MAC]

:: Mit Ping testen, ob die DS gebootet hat
:pingtest
cls
set HOST=
ping -n 1 %HOST% | find /i /c "Zielhost nicht erreichbar." && goto :pingtest
goto :connect

:: Jetzt ist die DS online und die NetzLW können verbunden werden
:connect
@echo off
set user=XXXd
set pw=XXX
net use g: \\XXX.XXX.XXX.XXX\gemeinsam /user:%user% %pw%
net use h: \\XXX.XXX.XXX.XXX\home /user:%user% %pw%
net use m: \\XXX.XXX.XXX.XXX\media /user:%user% %pw%
net use t: \\XXX.XXX.XXX.XXX\photo /user:%user% %pw%
net use u: \\XXX.XXX.XXX.XXX\music /user:%user% %pw%
net use v: \\XXX.XXX.XXX.XXX\video /user:%user% %pw%
net use z: \\XXX.XXX.XXX.XXX\homes /user:%user% %pw%
color 0F

So sollte es funktionieren, aber tuts leider nicht. Jetzt gibt die DS die IP frei bevor sie wirklich gebootet (piepton kommt ca 5sec. später) ist und somit kann das Skript die NetzLW nicht verbinden.
Ist wirklich zum verzweifeln. Aber macht trotzdem spass. Irgendwie findet man dann doch eine Lösung oder jemand bringt einen drauf.
Was meint Ihr dazu? Bin gespannt auf Eure Kommentare.
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Wenn Du Vista und 7 hast, dann hier eine Variante für PowerShell:
Rich (BBCode):
$ErrorActionPreference = "Continue"
$count = 0
$path = "\\server\share" # the share used for the testing

function do-map { 
    # put the map commands here
    (new-object -com WScript.Network).MapNetworkDrive("x:","\\server\share")
}

while ($count -lt 5) # how often to try
{
    $count++
    try {
        resolve-path $path -ea Stop
        write-output "found, mapping drives..."
        do-map
        break
    } catch [Management.Automation.ActionPreferenceStopException] {
        write-output "still trying..."
        Start-Sleep -Seconds 1 # how long to sleep between the tries
    }
}
Als xyz.ps1 speichern und mit der powershell.exe starten.

Vorher einmalig die Signaturen deaktivierten, dazu in der PowerShell (als Admin gestartet):
Rich (BBCode):
Set-ExecutionPolicy Unrestricted
 

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Vielen Dank Merthos für deine Variante. Wird bei diesem Skript eine Zeitüberbrückung generiert oder eine andere Methode verwendet?
Ich kenne Powershell und deren Befehle nicht. Werde aber am Wochenden mal ausprobieren.

Danke für die Unterstützung.
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Das "resolve-path" versucht auf die Freigabe von der DS zuzugreifen. Wenn das nicht funktioniert (weil noch nicht da) gibt es einen Fehler und der "catch"-Block greift. Dort wird ein bissel gewartet ("start-sleep") und durch die äußere "while"-Schleife dann von vorne angefangen.

Wenn hingegen das "resolve-path" funktioniert, ist die DS verfügbar und die Verknüpfungen werden erstellt ("do-map"). Die Schleife wird dann abgebrochen ("break").

Prinzipiell der gleiche Ablauf wie die Batch. Sollte aber zuverlässiger sein, weil direkt auf die Verfügbarkeit der Freigabe geprüft wird.
 

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Hallo,

vielen Dank Merthos für die Hilfe. Bin leider noch nicht dazugekommen.
Deine Variante hört sich sehr interessant an. Leider kenn ich mich "noch" nicht mit Powershell aus. Deshalb wird das nicht so schnell gehn. Hab aber shon erste Versuche gemacht um mal ein LW bei laufender DS zu mappen. Danach taste ich mich mal langsam voran um zu sehn was alles passiert.
Im Moment bringt mir PS beim ausführen, dass das Ausführen von Skripts deaktiviert ist.

Danke.
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84

novum

Benutzer
Mitglied seit
17. Okt 2010
Beiträge
16
Punkte für Reaktionen
0
Punkte
1
Ok. Jetzt hats gefunkt. Danke.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat