¿Cómo puedo detectar mediante programación la presencia de una VPN?

2

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
    
pregunta Keith Bennett 14.09.2017 - 05:11

1 respuesta

2

Eso es exactamente lo que tengo en mi propio código. En bash se ve como:

vpn=$( netstat -rn | grep utun1 | wc -l )
if [[ $vpn -eq 0 ]] ; then
    # no VPN active
else
    # VPN active
fi

Ha sido bastante confiable en mi entorno. Me gustaría poder discernir diferentes configuraciones de VPN vigentes, pero no tanto como para tener que codificarlo (aún).

    
respondido por el Michael Sattler 22.10.2017 - 11:21

Lea otras preguntas en las etiquetas