He visto preguntas similares a esta formuladas anteriormente en varias variaciones, pero aún no he encontrado una respuesta satisfactoria.
Esto es lo que tengo:
- Una computadora portátil Debian altamente móvil que cambia de red con frecuencia.
- Un servidor FreeNAS en casa con un montón de recursos compartidos CIFS.
Esto es lo que quiero:
- Si accedo al directorio compartido CIFS cuando estoy en casa, monte automáticamente el recurso compartido CIFS.
- Si accedo al recurso compartido CIFS cuando estoy en otro lugar, devuelvo un error inmediatamente (es decir, no contemple la red durante cinco minutos antes de descubrir que el NAS no está allí).
- Cuando suspende o hiberna la máquina, desmonte limpiamente el recurso compartido para que la montura no apunte al aire cuando la máquina vuelva a activarse. Si el recurso compartido no se puede desmontar limpiamente (un proceso está utilizando un directorio), ya sea:
- Abortar la suspensión / hibernación y dime quién está acampando en el monte; o
- Forzar el desmontaje de todos modos y proceder con la suspensión / hibernación.
- Crédito adicional: cuando se corta la conexión de red (desconecte o pierda la asociación con el WAP), intente desmontar limpiamente el recurso compartido.
- Crédito adicional: esta magia debe ser independiente del administrador de red en uso.
Ninguna de las diversas opciones sobre las que he leído parece ser apropiada:
autofs
parece ser confiable, pero no parece tener ningún conocimiento de suspender / hibernar.- La
_netdev
opciónmount
y/etc/fstab
parece interesante, pero parece aplicarse solo a los recursos compartidos de NFS. - Todavía no he podido ir
gvfs
a trabajar, pero tampoco me he esforzado mucho.
¿Alguna sugerencia sobre cómo abordar esto?
APÉNDICE:
Aquí está la versión corta de lo que terminé haciendo hasta ahora. Instalé autofs
y escribí un pequeño script de shell para forzar el vencimiento de todos los volúmenes montados automáticamente, que se llama cada vez que se desactiva una interfaz de red.
Creé un mapa de montador automático para mi servidor CIFS, con las credenciales almacenadas en un archivo externo (yuck). Luego escribí el siguiente script de shell:
#!/bin/sh -e
# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
kill -USR1 "$(cat /var/run/autofs.pid)"
fi
El envío de la señal USR1 al demonio de automontaje hace que expire forzosamente todas las monturas no utilizadas. Luego coloqué este script en /etc/network/if-down.d/autofs
, con un enlace suave en /etc/network/if-post-down.d/autofs
. NetworkManager invoca todos los scripts en el último directorio cuando se cae una conexión, por lo que cualquier sistema de archivos montado automáticamente debe desmontarse.
Sin embargo, no estoy terriblemente feliz con el acuerdo. Para empezar, autofs
no hace distinción entre los volúmenes montados automáticamente y, al recibir USR1, desmontará todos los volúmenes inactivos, incluidos los volúmenes que no son de red, que es bastante pesado.
Además, la contraseña de inicio de sesión para el servidor CIFS debe almacenarse en un archivo. Preferiría que me lo pidieran.
De todos modos, eso es lo que he reunido hasta ahora. Funciona, pero estaré feliz de usar algo mejor ...
sudo mount -t cifs ...
produce resultados preferibles. Voy a jugar un poco más, pero no creo que Gigolo sea lo que estoy buscando.