У меня есть эта запись в моем 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.
Я подтвердил, что скрипт в /etc/network/if-down.d/
вообще не вызывается при отключении от openconnect vpn.
Однако /etc/network/if-post-down.d/
вызывается, так что вы можете поместить туда свой скрипт. Убедитесь, что права доступа к вашему сценарию равны 755.
Есть два варианта: либо проверять наличие процесса openconnect
, либо проверять IP-адрес, например, каждую 1 секунду, чтобы определить, находимся ли мы в 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
. Я добавил 10-секундную задержку. после запуска службы VPN, так как для фактического запуска VPN-подключения может потребоваться некоторое время.
И я использовал веб-сайт ifconfig.me, чтобы получить IP-адрес. Но это может быть ненадежным источником информации, если вы хотите использовать его регулярно (я имею в виду, что он может по какой-то причине выйти из строя). , я не знаю). И если ваш терминал не отправляет трафик через OpenConnect (извините за то, что я так невежествен об этом, потому что я не использую это), вы должны добавить это перед НА ОСНОВЕ IP ADDRESS часть сценария:
$ export http_proxy="http://USER:PASSWORD@PROXY_SERVER:PORT"
Если есть лучшее решение, буду рад услышать.
Надеюсь, это поможет.