Mi piacerebbe essere in grado di rilevare a livello di codice la presenza di una VPN su un Mac. Rilevare se una connessione VPN è attivo a livello di programmazione mostra quale sarà l'output di netstat -nr
quando una VPN è attiva:
Internet:
Destination Gateway Flags Refs Use Netif Expire
0/1 10.81.10.5 UGSc 5 0 utun1
...
Alcune informazioni sono significative per il mio scopo, il resto non lo è. Cosa devo controllare esattamente? Solo che Netif
contiene utun1
? O devo vedere anche 0/1
? O se no, e allora?
Attualmente sto testando il primo e l'ultimo elemento di dati in quella linea, e sembra che funzioni, ma vorrei ridurre la probabilità di eventuali falsi positivi o negativi. In Ruby è:
# 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