J'aimerais pouvoir détecter de manière programmatique la présence d'un VPN sur un Mac. Détecter si une connexion VPN est active de manière programmatique montre ce que la sortie de netstat -nr
ressemblera lorsqu'un VPN sera actif :
Internet:
Destination Gateway Flags Refs Use Netif Expire
0/1 10.81.10.5 UGSc 5 0 utun1
...
Certaines informations sont importantes pour mon objectif, le reste ne l'est pas. Que dois-je vérifier exactement ? Seulement que Netif
contient utun1
? Ou dois-je voir 0/1
là aussi ? Ou si ce n'est pas le cas, que se passera-t-il alors ?
Je teste actuellement le premier et le dernier élément de données de cette ligne, et cela semble fonctionner, mais j'aimerais réduire la probabilité de tout faux positif ou négatif. En Ruby, c'est :
# This is determined by whether or not a line like the following
# appears in the output of `netstat -nr`:
# 0/1 10.137.0.41 UGSc 15 0 utun1
def vpn_running?
run_os_command('netstat -nr').split("\n").grep(/^0\/1.*utun1/).any?
end