web-dev-qa-db-fra.com

Comment obtenir OpenConnect pour démonter une partition lorsque VPN se ferme?

J'ai cette entrée dans mon fstab:

sc-netapp48.nvidia.com:/vol/scratch9/scratch.securesign_new /home/scratch.securesign_new nfs _netdev,comment=systemd.automount 0 0

Je ne sais pas comment cela fonctionne exactement, mais quand je suis sur le VPN et que je dois accéder à /home/scratch.securesign_new, il se présente comme magiquement.

Cependant, lorsque je déconnecte du VPN, il semble que /home/scratch.securesign_new est toujours monté. Cela provoque toutes sortes de problèmes. Par exemple, chaque fois que j'installe un programme, le programme d'installation tente d'accéder à /home/scratch.securesign_new/.config, qui n'existe pas.

Donc, je dois être capable de umount -l /home/scratch.securesign_new lorsque le VPN ferme. Comment je fais ça? J'ai essayé d'ajouter un script en /etc/network/if-down.d/, mais ce script n'est pas exécuté lorsque le VPN se ferme.

Je cours Kubuntu 20.04.

3
lord_nimon

Il existe deux options: soit vérifier la présence du processus openconnect, ou vérifiez l'adresse IP par exemple toutes les 1 seconde pour déterminer si nous sommes toujours sur VPN ou non. J'ai supposé que l'adresse IP reste la idem pendant un openConnect session.so Cela devrait fonctionner:

#######   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

Et n'hésitez pas à jouer avec les chiffres devant sleep. J'ai ajouté un délai de 10 secondes après le démarrage du service VPN car cela pourrait prendre un certain temps pour que la connexion VPN soit réellement démarrée.

Et j'ai utilisé le site web ifconfig.me pour obtenir l'adresse IP. mais ce n'est peut-être pas une source fiable d'informations si vous souhaitez l'utiliser régulièrement (je veux dire qu'il pourrait descendre pour une raison quelconque, je Je ne sais pas). et si votre terminal n'envoie pas le trafic via OpenConnect (désolé d'être si ignorant à ce sujet parce que je n'utilise pas cela), vous devez l'ajouter avant le Basé sur l'adresse IP une partie du script:

$ export http_proxy="http://USER:PASSWORD@PROXY_SERVER:PORT"

S'il y a une meilleure solution, je suis heureux d'entendre.

J'espère que ça aide.

0
Parsa Mousavi