2 votos

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

Me gustaría poder detectar mediante programación la presencia de una VPN en un Mac. Detectar si una conexión VPN está activa mediante programación muestra lo que la salida de netstat -nr se verá 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 significativa para mi propósito, el resto no lo es. ¿Qué necesito comprobar exactamente? Sólo que Netif contiene utun1 ? ¿O tengo que ver 0/1 ¿también allí? O si no, ¿qué pasa entonces?

Actualmente estoy probando para los primeros y últimos datos de esa línea, y parece que funciona, pero me gustaría reducir la probabilidad de cualquier falso positivo o negativo. 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

2voto

ZekeC Puntos 25

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 fiable en mi entorno. Me gustaría ser capaz de discernir diferentes configuraciones de VPN en efecto, pero no tanto como para tener que codificarla (todavía).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X