====== Network-Manager et VPN ======
* Objet : Script pour le lancement automatique du VPN avec Network-Manager
* Niveau requis : {{tag>avisé}}
* Commentaires : //Vous avez configuré un VPN dans Network-Manager, et vous voulez qu'il soit démarré automatiquement au démarrage et au retour de l'hibernation.//
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
===== Introduction =====
Network-Manager est une surcouche de haut-niveau pour la gestion du réseau. Cependant, il demeure certaines opérations qui ne sont pas simples à réaliser…
En particulier, dans la version de Jessie (0.9.10.0), il ne semble pas possible de gérer un démarrage automatique des VPN.
Ce mini-tuto propose la création d'un script pour palier à cela.
===== Installation =====
==== Récupération des uuid ====
Tout d'abord, il va vous falloir récupérer les uuid de deux connexions, l'uuid de la connexion au VPN, et l'uuid de la connexion réseau qu'il utilise. Pour se faire, la commande suivante fera l'affaire :
nmcli c
Notez bien les UUID respectifs. Ils ressemblent à des chaînes hexadécimales genre : 136e8b61-e704-4037-bf22-a2f6e5a1bd09.
==== Création du script de connexion ====
* Créer un fichier ''vpn-start'' contenant le code suivant :
#!/bin/sh
# Les X sont à remplacer par l'UUID de la connexion réseau
ETH="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
# Les X sont à remplacer par l'UUID de la connexion VPN
VPN="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
activ_eth=$(nmcli con show --active | grep "${ETH}")
activ_vpn=$(nmcli con show --active | grep "${VPN}")
if [ -n "${activ_eth}" ] && [ -z "${activ_vpn}" ]
then
nmcli c up uuid "${VPN}"
fi
(Pour en savoir plus, voir ''man nmcli'')
* Et rendre ce script exécutable :
chmod +x vpn-start
===== Utilisation =====
Pour que le script fonctionne, il doit être lancé depuis une session active ou par root.
==== En simple utilisateur ====
Pour le lancer depuis sa session, il suffit d'appeler le script depuis le .xsession, un fichier autostart, etc. Cependant, ce script ne se lancera qu'une fois.
Vous pouvez cependant créer un script auxiliaire :
#!/bin/sh
while true
do
./vpn-start
sleep 5m
done
Enregistrer tout cela dans votre ''~/.local/bin'' et lancer le second script qui se chargera de lancer le premier…
==== En root ====
En root, vous pouvez utiliser la crontab (ça ne marchera pas en tant que simple utilisateur parce que la crontab n'est pas lancée **dans** la session active.)
Dans ce cas, vous allez plutôt vouloir enregistrer votre script dans ''/root'' ou dans ''/usr/local/bin'' (le script étant lancé par root, vous ne voulez pas qu'il soit modifiable, déplaçable, suppressible par n'importe qui.)
Puis, tout simplement :
crontab -e
*/5 * * * * /usr/local/bin/startvpn 2>/dev/null 1>/dev/null