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.
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.
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
)
chmod +x vpn-start
Pour que le script fonctionne, il doit être lancé depuis une session active ou par root.
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, 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