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