Sorry, ich glaube, ich bin da etwas zu weit gegangen und denke jetzt, meine Lösung, die ich letztendlich zwar für die richtige halte, wäre besser später ein zweiter Schritt.
Versuche besser jetzt einfach mal eine einfache Lösung, die nix kaputt macht und nur erneut den mount startet, wenn Netzwerk und Server verfügbar sind. Damit veränderst Du erst mal nix an den bestehenden Netzwerkeinstellungen, die ja grundsätzlich funktionieren. Und wenn das funktioniert, ist es ja erst mal gut. Erstelle dazu folgende Datei:
/usr/local/bin/rc_local
mit folgendem Inhalt:
Code: Alles auswählen
#!/bin/bash
Server=192.168.2.39
IfaceIsUp=0
HomeNetIsConnect=-1
TimeOut=60
sec=0
while [ $sec -lt $TimeOut ]; do
if [[ -n $(ip addr show dev eth0 | grep inet) ]]; then
((IfaceIsUp++))
break
fi
sleep 1 && ((sec++))
done
[[ $IfaceIsUp -eq 0 ]] && exit 1
sec=0
while [ $sec -lt $TimeOut ]; do
ping -c1 -W1 -q $Server &>/dev/null
HomeNetIsConnect=$?
[ $HomeNetIsConnect -eq 0 ] && break
sec=$[$sec+1]
/bin/sleep 1
done
if [[ $HomeNetIsConnect -eq 0 ]]; then
/bin/mount -a
exit 0
fi
exit 1
Das Script prüft im ersten Block in der oberen Hälfte, ob das Netzwerkinterface gestartet ist und eine IP-Adresse vom Router hat und wartet ggf. bis zu 60 Sekunden. Und in der unteren Hälfte wird geprüft, ob der Server antwortet. Dazu musst Du allerdings ganz oben im Script die IP-Adresse des Servers prüfen und ggf. korrigieren und Deinen Server eintragen.
Dann noch die Rechte für das Script setzen:
Code: Alles auswählen
chown root:root /usr/local/bin/rc_local
chmod 755 /usr/local/bin/rc_local
Ganz zum Schluss trägst Du einfach den Start dieses Scripts in die Datei
/etc/rc.local
ein, als vorletze Zeile, vor dem exit, mit vollständiger Pfad-Angabe:
/usr/local/bin/rc_local
Beim nächsten Start wird vermutlich der gleiche unvollständige Mount wie bisher über die fstab ablaufen - aber dann, wenn Du Dich angemeldet hast, wird noch mal ein "mount -a" hinterher gesendet und alle Remote-Shares müssten verbunden sein. Versuchs einfach mal... und wenn das nicht klappt.... diese Lösung ist also noch einfacher zurückzusetzen, als der erste Vorschlag... einfach den Eintrag in der /etc/rc.local entfernen und gut is....