Ich habe ähnliche Fragen gesehen, die zuvor in verschiedenen Variationen gestellt wurden, aber ich habe noch keine zufriedenstellende Antwort gefunden.
Folgendes habe ich:
- Ein hochmobiler Debian-Laptop, der häufig zwischen Netzwerken wechselt.
- Ein FreeNAS-Server zu Hause mit einer Reihe von CIFS-Freigaben.
Folgendes möchte ich:
- Wenn ich zu Hause auf das CIFS-Freigabeverzeichnis zugreife, mounten Sie die CIFS-Freigabe automatisch.
- Wenn ich an einem anderen Ort auf die CIFS-Freigabe zugreife, geben Sie sofort einen Fehler zurück (dh betrachten Sie das Netzwerk fünf Minuten lang nicht, bevor Sie herausfinden, dass der NAS nicht vorhanden ist).
- Wenn ich die Maschine anhalte oder in den Ruhezustand versetze, entfernen Sie die Freigabe sauber, damit die Halterung nicht in Luft aufsteigt, wenn die Maschine wieder aufwacht. Wenn die Freigabe nicht sauber aufgehoben werden kann (ein Prozess verwendet ein Verzeichnis), gilt Folgendes:
- Brechen Sie den Suspend / Hibernate ab und sagen Sie mir, wer auf dem Berg kampiert. oder
- Erzwingen Sie trotzdem das Aufheben der Bereitstellung und fahren Sie mit Suspend / Hibernate fort.
- Zusätzliches Guthaben: Wenn die Netzwerkverbindung unterbrochen wird (ziehen Sie den Stecker oder verlieren Sie die Verbindung zum WAP), versuchen Sie, die Freigabe sauber aufzuheben.
- Zusätzliches Guthaben: Diese Magie sollte unabhängig vom verwendeten Netzwerkmanager sein.
Keine der verschiedenen Optionen, über die ich gelesen habe, scheint angemessen zu sein:
autofs
scheint zuverlässig zu sein, scheint aber kein Bewusstsein für Suspend / Hibernate zu haben.- Die
_netdev
Option inmount
und/etc/fstab
sieht interessant aus, scheint jedoch nur für NFS-Aktien zu gelten. - Ich konnte noch nicht
gvfs
zur Arbeit gehen, aber dann habe ich mich nicht sehr bemüht.
Irgendwelche Vorschläge, wie man das angeht?
NACHTRAG:
Hier ist die Kurzversion von dem, was ich bisher gemacht habe. Ich habe autofs
ein kleines Shell-Skript installiert und geschrieben, um das automatische Ablaufen aller automatisch gemounteten Volumes zu erzwingen, das aufgerufen wird, wenn eine Netzwerkschnittstelle ausfällt.
Ich habe eine Automounter-Map für meinen CIFS-Server erstellt, deren Anmeldeinformationen in einer externen Datei gespeichert sind (yuck). Ich habe dann folgendes Shell-Skript geschrieben:
#!/bin/sh -e
# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
kill -USR1 "$(cat /var/run/autofs.pid)"
fi
Durch das Senden des USR1-Signals an den Automount-Daemon werden alle nicht verwendeten Mounts zwangsweise abgelaufen. Ich habe dieses Skript dann /etc/network/if-down.d/autofs
mit einem Softlink eingefügt /etc/network/if-post-down.d/autofs
. NetworkManager ruft alle Skripte im letzteren Verzeichnis auf, wenn eine Verbindung unterbrochen wird. Daher sollten alle automatisch gemounteten Dateisysteme nicht gemountet werden.
Ich bin jedoch nicht besonders zufrieden mit dem Arrangement. Zunächst autofs
wird nicht zwischen automatisch gemounteten Volumes unterschieden, und beim Empfang von USR1 werden alle inaktiven Volumes, einschließlich Nicht-Netzwerk-Volumes, ausgehängt, was ziemlich umständlich ist.
Außerdem muss das Anmeldekennwort für den CIFS-Server in einer Datei gespeichert werden. Ich würde es sehr vorziehen, dazu aufgefordert zu werden.
Jedenfalls habe ich mich bisher zusammengetan. Es funktioniert, aber ich werde gerne etwas Besseres verwenden ...
sudo mount -t cifs ...
bevorzugten Ergebnissen. Ich werde ein bisschen mehr damit herumspielen, aber ich denke nicht, dass Gigolo genau das ist, wonach ich suche.