Ho visto domande simili a questa poste in diverse varianti, ma devo ancora trovare una risposta soddisfacente.
Ecco cosa ho:
- Un laptop Debian altamente mobile che cambia frequentemente le reti.
- Un server FreeNAS a casa con un sacco di condivisioni CIFS su di esso.
Ecco cosa voglio:
- Se accedo alla directory della condivisione CIFS quando sono a casa, monto automaticamente la condivisione CIFS.
- Se accedo alla condivisione CIFS quando sono altrove, restituisco immediatamente un errore (ovvero non contemplare la rete per cinque minuti prima di capire che il NAS non è lì).
- Quando sospendo o ibisco la macchina, smonta in modo pulito la condivisione in modo che il supporto non si punti nel nulla quando la macchina si risveglia di nuovo. Se la condivisione non può essere smontata in modo chiaro (un processo utilizza una directory):
- Interrompi la sospensione / ibernazione e dimmi chi è accampato sul monte; o
- Forzare comunque lo smontaggio e procedere con la sospensione / ibernazione.
- Credito extra: quando la connessione di rete si interrompe (staccare la spina o perdere l'associazione con il WAP), provare a smontare in modo chiaro la condivisione.
- Credito extra: questa magia dovrebbe essere indipendente dal gestore della rete in uso.
Nessuna delle varie opzioni di cui ho letto sembra essere appropriata:
autofs
sembra essere affidabile, ma non sembra avere alcuna consapevolezza di sospendere / ibernare.- L'
_netdev
opzione è interessantemount
e/etc/fstab
sembra interessante, ma sembra applicarsi solo alle condivisioni NFS. - Non sono ancora riuscito a mettermi
gvfs
al lavoro, ma poi non ci ho provato molto.
Qualche suggerimento su come affrontare questo?
APPENDICE:
Ecco la versione breve di quello che ho finito per fare finora. Ho installato autofs
e scritto un piccolo script di shell per forzare la scadenza di tutti i volumi montati automaticamente, che viene chiamato ogni volta che un'interfaccia di rete non funziona.
Ho creato una mappa di automounter per il mio server CIFS, con le credenziali memorizzate in un file esterno (yuck). Ho quindi scritto il seguente script di shell:
#!/bin/sh -e
# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
kill -USR1 "$(cat /var/run/autofs.pid)"
fi
L'invio del segnale USR1 al demone automount provoca la scadenza forzata di tutti i mount non utilizzati. Ho quindi inserito questo script /etc/network/if-down.d/autofs
, con un softlink in /etc/network/if-post-down.d/autofs
. NetworkManager richiama tutti gli script in quest'ultima directory quando si interrompe una connessione, quindi tutti i filesystem montati automaticamente devono essere smontati.
Non sono terribilmente soddisfatto dell'accordo, comunque. Tanto per cominciare, autofs
non fa distinzione tra volumi montati automaticamente e, alla ricezione di USR1, smonterà tutti i volumi inattivi, compresi i volumi non di rete, che è piuttosto pesante.
Inoltre, la password di accesso per il server CIFS deve essere memorizzata in un file. Preferirei di gran lunga essere richiesto.
Ad ogni modo, è quello che ho raccolto insieme finora. Funziona, ma sarò felice di usare qualcosa di meglio ...
sudo mount -t cifs ...
risultati preferibili. Ci giocherò un po 'di più, ma non credo che Gigolo sia proprio quello che sto cercando.