我的 fstab 中有以下条目:
sc-netapp48.nvidia.com:/vol/scratch9/scratch.securesign_new /home/scratch.securesign_new nfs _netdev,comment=systemd.automount 0 0
我不确定它具体是如何工作的,但是当我使用 VPN 并需要访问时/home/scratch.securesign_new
,它就会神奇地出现。
但是,当我断开与 VPN 的连接时,似乎/home/scratch.securesign_new
仍处于挂载状态。这会导致各种问题。例如,每当我安装程序时,安装程序都会尝试访问/home/scratch.securesign_new/.config
不存在的。
所以我需要能够umount -l /home/scratch.securesign_new
在 VPN 关闭时执行此操作。我该怎么做?我尝试在 中添加一个脚本/etc/network/if-down.d/
,但 VPN 关闭时不会执行该脚本。
我正在运行 Kubuntu 20.04。
答案1
我确认,断开与 openconnect vpn 的连接时,脚本/etc/network/if-down.d/
似乎根本没有被调用。
但是确实/etc/network/if-post-down.d/
会被调用,因此您可以将脚本放在那里。请确保脚本的权限为 755。
答案2
有两个选项:要么检查进程是否存在openconnect
,要么每 1 秒检查一次 IP 地址,以确定我们是否仍在 VPN 上。我假设 IP 地址在OpenConnect会话。所以这应该有效:
####### BASED ON THE PRESENCE OF OPENCONNECT #######
while [ 1 ]
do
if [ -n `pgrep openconnect` ]
then sudo umount -l /home/scratch.securesign_new
fi
sleep 1
done
###### OR BASED ON THE IP ADDRESS ######
sudo openconnect -u user --passwd-on-stdin vpnserver
sleep 10
vpn_ip=`curl ifconfig.me`
while [ 1 ]
do
current_ip=`curl ifconfig.me`
if [ "$vpn_ip" != "$current_ip" ]
then sudo umount -l /home/scratch.securesign_new
fi
sleep 1
done
您可以随意调整前面的数字sleep
。我在启动 VPN 服务后添加了 10 秒的延迟,因为 VPN 连接可能需要一段时间才能真正开始。
我使用了该网站ifconfig.me来获取 IP 地址。但如果你想经常使用它,它可能不是一个可靠的信息来源(我的意思是它可能会因为某种原因而关闭,我不知道)。如果你的终端不通过 OpenConnect 发送流量(抱歉我对此很无知,因为我不使用它),你必须在根据 IP 地址部分脚本:
$ export http_proxy="http://USER:PASSWORD@PROXY_SERVER:PORT"
如果有更好的解决方案,我很高兴听到。
希望能帮助到你。