以前にいくつかのバリエーションでこれに似た質問をしたことがありますが、満足のいく答えはまだ見つかりません。
これが私が持っているものです:
これが私が欲しいものです:
私が読んださまざまなオプションはどれも適切ではないようです。
autofs
は信頼できるようですが、サスペンド/ハイバネートを認識していないようです。mount
および_netdev
の/etc/fstab
オプションは面白そうに見えますが、NFS共有にのみ適用されるようです。gvfs
を機能させることができていませんが、それでも私はそれほど一生懸命に努力していません。これにアプローチする方法について何か提案はありますか?
補遺:
これが私がこれまでにやったことの短いバージョンです。 autofs
をインストールし、自動マウントされたすべてのボリュームを強制的に期限切れにする小さなシェルスクリプトを作成しました。これは、ネットワークインターフェイスがダウンするたびに呼び出されます。
CIFSサーバーのオートマウンターマップを作成し、資格情報を外部ファイル(yuck)に保存しました。次に、次のシェルスクリプトを作成しました。
#!/bin/sh -e
# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
kill -USR1 "$(cat /var/run/autofs.pid)"
fi
USR1シグナルをautomountデーモンに送信すると、未使用のマウントがすべて強制的に期限切れになります。次に、このスクリプトを/etc/network/if-down.d/autofs
に配置し、ソフトリンクを/etc/network/if-post-down.d/autofs
に配置しました。 NetworkManagerは、接続が切断されると後者のディレクトリにあるすべてのスクリプトを呼び出すため、自動マウントされたファイルシステムはすべてアンマウントする必要があります。
しかし、私はその取り決めにひどく満足していません。まず、autofs
は自動マウントされたボリュームを区別せず、USR1を受信すると、マウントを解除しますallネットワーク以外のボリュームを含む非アクティブなボリューム。 。
さらに、CIFSサーバーのログインパスワードをファイルに保存する必要があります。私はそれを求められることを強く望んでいます。
とにかく、それは私がこれまで一緒にまとめてきたものです。それは動作しますが、私はもっと良いものを使用して幸せになります...
NetworkManagerを使用する場合は、アップまたはダウンするネットワークインターフェイスで実行するスクリプトを作成できます。
NetworkManagerは、ネットワークイベントに応答して、/ etc/NetworkManager /dispatcher.dディレクトリ内のスクリプトをアルファベット順に実行します。各スクリプトは、(a)通常のファイル、(b)rootが所有、(c)グループなどが書き込み不可、(d)set-uidが不可、(e)所有者が実行可能である必要があります。各スクリプトは2つの引数を受け取ります。1つ目はアクティブ化されたばかりのデバイスのインターフェイス名で、2つ目はアクションです。
たとえば検索ドメインから独自のネットワークを検出し、インターフェイスがオンラインになったときにマウントまたはアンマウントします。
#!/bin/bash
#/etc/NetworkManager/dispatcher.d/mount-my-cifs
case "$2" in
up)
# some logic to detect if we're at home
grep "search myhome.local" /etc/resolv.conf
if [ "$?" != "0" ] ; then
exit
else
mount /mnt/cifs
fi
;;
down)
umount /mnt/cifs
;;
esac