Já vi perguntas semelhantes a essa feitas em várias variações, mas ainda não encontrei uma resposta satisfatória.
Aqui está o que eu tenho:
- Um laptop Debian altamente móvel que troca de rede com freqüência.
- Um servidor FreeNAS em casa com um monte de compartilhamentos CIFS nele.
Aqui está o que eu quero:
- Se eu acessar o diretório de compartilhamento CIFS quando estiver em casa, monte automaticamente o compartilhamento CIFS.
- Se eu acessar o compartilhamento CIFS quando estiver em outro lugar, retorne um erro imediatamente (ou seja, não contemple a rede por cinco minutos antes de descobrir que o NAS não existe).
- Ao suspender ou hibernar a máquina, desmonte o compartilhamento de forma limpa para que o suporte não aponte para o nada quando a máquina voltar a funcionar. Se o compartilhamento não puder ser desmontado corretamente (um processo está usando um diretório):
- Interrompa a suspensão / hibernação e me diga quem está acampando no monte; ou
- Force a desmontagem de qualquer maneira e continue com suspender / hibernar.
- Crédito extra: quando a conexão de rede cair (puxe o plugue ou perca a associação com o WAP), tente desmontar corretamente o compartilhamento.
- Crédito Extra: Essa mágica deve ser independente do gerenciador de rede em uso.
Nenhuma das várias opções que eu li sobre parece ser apropriada:
autofs
parece ser confiável, mas não parece ter conhecimento de suspender / hibernar.- A
_netdev
opçãomount
e/etc/fstab
parece interessante, mas parece se aplicar apenas aos compartilhamentos NFS. - Ainda não consegui
gvfs
trabalhar, mas não tentei muito.
Alguma sugestão sobre como abordar isso?
TERMO ADITIVO:
Aqui está a versão curta do que acabei fazendo até agora. Eu instalei autofs
e escrevi um pequeno script de shell para forçar a expiração de todos os volumes montados automaticamente, que são chamados sempre que uma interface de rede é desativada.
Criei um mapa de montador automático para meu servidor CIFS, com as credenciais armazenadas em um arquivo externo (eca). Em seguida, escrevi o seguinte 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
Enviar o sinal USR1 para o daemon de montagem automática faz com que expire à força todas as montagens não utilizadas. Em seguida, coloquei esse script /etc/network/if-down.d/autofs
, com um softlink em /etc/network/if-post-down.d/autofs
. O NetworkManager chama todos os scripts deste último diretório quando uma conexão é interrompida; portanto, qualquer sistema de arquivos montado automaticamente deve ser desmontado.
Eu não estou muito feliz com o arranjo, no entanto. Para começar, autofs
não faz distinção entre volumes montados automaticamente e, ao receber USR1, desmontará todos os volumes inativos, incluindo volumes não pertencentes à rede, o que é bastante pesado.
Além disso, a senha de login do servidor CIFS deve ser armazenada em um arquivo. Eu preferiria muito ser solicitado.
Enfim, é isso que eu reuni até agora. Funciona, mas ficarei feliz em usar algo melhor ...
sudo mount -t cifs ...
resultados preferíveis. Vou mexer um pouco mais, mas não acho que Gigolo seja exatamente o que estou procurando.