连接到特定网络时自动挂载 CIFS 共享,然后在断开连接后或断开连接前自动卸载

连接到特定网络时自动挂载 CIFS 共享,然后在断开连接后或断开连接前自动卸载

问题:我有一台笔记本电脑(运行 ubuntu 20.04),它移动性很强,可以在多个位置工作。在位置 A 时:我有一个需要工作的 CIFS 共享。不在位置 A 时,我不需要这个特定的 CIFS 共享。如果我使用一切方法手动安装 CIFS 共享,但我想自动执行该过程,因为我每天至少更改 2-3 次位置。当我在位置 A 连接到网络时,我不想手动安装 cifs 文件共享,我宁愿让它运行。更重要的是,如果我断开与位置 A 的连接,我不希望我的系统崩溃,因为它认为应该有一个不再存在的文件系统。手动完成这些任务很快就会变得乏味。如何在连接到特定网络时自动安装共享,然后在不连接到同一网络时卸载共享?

笔记:这不是关于 fstab 的问题,除非您知道如何让 fstab 文件以这种方式运行,即不断切换位置和网络,并且仅在适当的位置/网络中安装文件系统。我有一个用于 cifs 共享的 fstab 条目,这使得安装和卸载更容易,但实际上并没有解决我的问题。

答案1

一种可能性是 systemd 自动挂载。

[1] 创建挂载点。

它不能位于您的主目录或 /media 下。因此,例如在 /mnt/SrvAshare 处创建一个。

[2] 然后在 /etc/fstab 中添加以下内容(例如):

//serverA/sharename /mnt/SrvAshare cifs defaults,uid=1000,noauto,x-systemd.automount,x-systemd.idle-timeout=30,x-systemd.mount-timeout=10 0 0

[3] 然后让 systemd 正常运行:

sudo systemctl daemon-reload
sudo systemctl restart remote-fs.target

它的工作原理是在启动时不自动安装(禁止自动),但根据规定(x-systemd.automount) 当您或某个应用程序或某个进程访问 /mnt/SrvAshare 挂载点时。它是无缝的。例如,如果您只是执行此操作,ls -l /mnt/SrvAshare它将挂载共享。

x-systemd.空闲超时=30如果 30 秒内 (用户指定) 没有使用共享,则会卸载该共享。

x-systemd.mount 超时=10将尝试挂载共享 10 秒(用户指定),如果无法访问则停止。如果您在错误的位置无意中选择了挂载点,则很有用。

答案2

x-systemd.idle-timeout=30删除 并noperm添加 以获得读/写权限。还应添加用户名和密码部分。

//serverA/sharename /mnt/SrvAshare cifs username=yourusername,password=yourpassword,defaults,noperm,noauto,x-systemd.automount,x-systemd.mount-timeout=10 0 0
  • 访问任何 Windows 共享都需要用户名和密码。
  • 我们需要noperm能够传输或编辑任何文件。
  • 空闲超时将导致重新挂载共享文件夹,即使它在 nautilus 中保持打开状态。

相关内容