我只通过NFS连接我的NAS膝上型电脑(arch )驱动器,在特定的5G路由器上使用特定的SSID,例如NASrouter_5G。当我将wifi (这种情况经常发生)更改到另一个路由器(例如NoNasRouter_2G )时,我希望当我再次连接到NASrouter_5G时,驱动器被卸载并重新挂载,因为如果没有,文件管理器就会冻结。
在我的研究中,我发现了一种匹配语法,但它只检测接口名,而且始终是wifi0,因此这似乎不起作用。而且,网络调度员看起来很有前途,我只是没有发现任何关于如何使用它的东西。
我如何做到这一点,最好是使用systemd,因为我在启动时挂载了驱动器,然后用systemd进行了歇斯底里,它工作得很好。但是任何方法都是值得赞赏的,因为我不想每次更改网络时都输入sudo systemctl stop nfs_moun、__t或一些alias。
安装服务文件包含以下内容:
[jack@jacks ~]$ cat /usr/lib/systemd/system/nfs_mount.service
[Unit]
Descritpion=Documents Mount NAS systemctl start nfs_mount
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target syslog.target network-online.target
Wants=syslog.target network-online.target
[Service]
Type=oneshot
ExecStart=/home/jack/nfs_mount.sh
[Install]
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target发布于 2020-11-11 01:54:05
有一些系统单元预定义条件可以使用,但是它们中的任何一个都与这个用例相匹配。
由于您的服务是oneshot服务,因此一旦主进程终止,该服务将变得不活跃。因此,使用简单的使用无限循环来守护服务,并使用基于SSID比较的IF语句包装您的nfs_mount.sh脚本可以使它:
#!/bin/sh
while :
do
sleep 5
if [ "$(iwgetid -r)" == 'your_ssid' ] ; then
# Your code here
else
# If it was not a oneshot service you can make a place here for a code to kill the service
fi
done因此,只有当您的系统连接到与所需的SSID匹配的WIFI时,文件系统才会被挂载。
https://unix.stackexchange.com/questions/619001
复制相似问题