Me gustaría poder detectar mediante programación la presencia de una VPN en una Mac. Detectando si hay una conexión VPN está activo programáticamente muestra cómo se verá la salida de netstat -nr
cuando una VPN está activa:
Internet:
Destination Gateway Flags Refs Use Netif Expire
0/1 10.81.10.5 UGSc 5 0 utun1
...
Parte de la información es importante para mi propósito, el resto no lo es. ¿Qué necesito verificar exactamente? ¿Solo que Netif
contiene utun1
? ¿O necesito ver 0/1
allí también? O si no, ¿entonces qué?
Actualmente estoy probando el primer y último elemento de datos en esa línea, y parece que está funcionando, pero me gustaría reducir la probabilidad de falsos positivos o negativos. En Ruby es:
# 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