Come posso rilevare a livello di codice la presenza di una VPN?

2

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

1 risposta

2

Questo è esattamente ciò che ho nel mio codice. In bash sembra:

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

È stato abbastanza affidabile nel mio ambiente. Mi piacerebbe essere in grado di distinguere diverse configurazioni VPN in effetti, ma non tanto da doverlo codificare (ancora).

    
risposta data 22.10.2017 - 11:21
fonte

Leggi altre domande sui tag