J'ai vu des questions similaires à cela posées auparavant dans plusieurs variantes, mais je n'ai pas encore trouvé de réponse satisfaisante.
Voici ce que j'ai:
- Un ordinateur portable Debian très mobile qui change fréquemment de réseau.
- Un serveur FreeNAS à la maison avec un tas de partages CIFS dessus.
Voici ce que je veux:
- Si j'accède au répertoire de partage CIFS lorsque je suis chez moi, montez automatiquement le partage CIFS.
- Si j'accède au partage CIFS lorsque je suis ailleurs, renvoie une erreur immédiatement (c'est-à-dire ne contemplez pas le réseau pendant cinq minutes avant de déterminer que le NAS n'est pas là).
- Lorsque je suspends ou hiberne la machine, démontez proprement le partage de sorte que le support ne pointe pas dans l'air lorsque la machine se réveille à nouveau. Si le partage ne peut pas être démonté proprement (un processus utilise un répertoire), soit:
- Annulez la suspension / hibernation et dites-moi qui campe sur le mont; ou
- Forcez le démontage de toute façon et continuez avec suspendre / mettre en veille prolongée.
- Crédit supplémentaire: lorsque la connexion réseau tombe (débranchez la prise ou perdez l'association avec le WAP), essayez de démonter proprement le partage.
- Crédit supplémentaire: cette magie doit être indépendante du gestionnaire de réseau utilisé.
Aucune des différentes options que j'ai lues ne semble appropriée:
autofs
semble fiable, mais ne semble pas avoir conscience de la suspension / mise en veille prolongée.- L'
_netdev
optionmount
et/etc/fstab
semble intéressante, mais semble s'appliquer uniquement aux partages NFS. - Je n'ai pas encore pu me rendre
gvfs
au travail, mais je n'ai pas essayé très fort.
Des suggestions sur la façon d'aborder cela?
ADDENDA:
Voici la version courte de ce que j'ai fini par faire jusqu'à présent. J'ai installé autofs
et écrit un petit script shell pour forcer l'expiration de tous les volumes montés automatiquement, qui est appelé chaque fois qu'une interface réseau tombe en panne.
J'ai créé une carte de montage automatique pour mon serveur CIFS, avec les informations d'identification stockées dans un fichier externe (beurk). J'ai ensuite écrit le script shell suivant:
#!/bin/sh -e
# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
kill -USR1 "$(cat /var/run/autofs.pid)"
fi
L'envoi du signal USR1 au démon de montage automatique provoque l'expiration forcée de tous les montages inutilisés. J'ai ensuite placé ce script /etc/network/if-down.d/autofs
dedans, avec un softlink dedans /etc/network/if-post-down.d/autofs
. NetworkManager appelle tous les scripts de ce dernier répertoire lorsqu'une connexion est interrompue, donc tout système de fichiers monté automatiquement doit être démonté.
Cependant, je ne suis pas très satisfait de cet arrangement. Pour commencer, autofs
ne fait aucune distinction entre les volumes montés automatiquement et, lors de la réception de l'USR1, démontera tous les volumes inactifs, y compris les volumes hors réseau, ce qui est plutôt lourd.
De plus, le mot de passe de connexion pour le serveur CIFS doit être stocké dans un fichier. Je préférerais de beaucoup être invité à le faire.
Quoi qu'il en soit, c'est ce que j'ai fait jusqu'à présent. Cela fonctionne, mais je serai heureux d'utiliser quelque chose de mieux ...
sudo mount -t cifs ...
donne des résultats préférables. Je vais en jouer un peu plus, mais je ne pense pas que Gigolo soit tout à fait ce que je recherche.