Controllare un profilo Tunnelblick con nome dal terminale
Tunnelblick espone connect, state e disconnect tramite AppleScript. Chiama quell’interfaccia, lascia che l’app resti al comando e dai a ogni attesa una scadenza.
Gli script che richiedono la VPN attiva prima di un backup spesso avviano openvpn direttamente. Così si abbandonano il profilo, il DNS e la gestione delle rotte che Tunnelblick già amministra. La via supportata è l’interfaccia AppleScript di Tunnelblick stesso, che accetta richieste connect, state e disconnect per una configurazione con nome. Usala e lascia che l’app resti al comando.
Parla con l’app, non con openvpn
Tunnelblick possiede il profilo OpenVPN, la scelta del motore, gli script e l’integrazione di DNS e rotte. Un binario openvpn separato è un’altra modalità di avvio, non una scorciatoia verso la stessa connessione.
Chiamare l’interfaccia di scripting dell’app mantiene intatta quella proprietà e rende ogni richiesta verificabile.
Gli esempi qui presuppongono che Tunnelblick si trovi in Applications, che una configurazione funzionante si chiami HQ e che i comandi girino nella sessione dell’utente Mac connesso. Sostituisci il nome con la configurazione esatta che hai.
Avvia esattamente un profilo con nome
Una richiesta connect nomina la configurazione. Non è una richiesta di connettere ciò che è stato selezionato per ultimo.
Eseguila nella sessione utente che possiede la configurazione:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'Attraversa le consuete richieste di accesso. macOS può chiedere se l’app chiamante è autorizzata a controllare Tunnelblick; verifica quale app e quale destinazione prima di approvare. Un’automazione che clicca oltre quella finestra ne annulla lo scopo.
Una richiesta connect ritorna prima che il tunnel sia attivo
La guida di scripting di Tunnelblick è esplicita: connect ritorna prima che la connessione sia completata. Uno stato di uscita zero significa che la richiesta è stata accettata, non che il traffico scorra.
Leggi lo stato separatamente:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED è un risultato di stato della connessione. Non prova ancora che la risorsa privata di cui ha bisogno il tuo lavoro sia raggiungibile, quindi verificalo separatamente prima di iniziare il lavoro dipendente.
Altri controlli dell’interfaccia di scripting coprono azioni più ampie e non servono quando cambia un solo profilo.
Attendi con una scadenza, poi fallisci
Il polling infinito è il modo in cui uno script resta appeso tutta la notte e blocca l’esecuzione successiva. Dai all’attesa una scadenza, un intervallo breve e un esito di errore esplicito. Tratta ogni stato diverso da CONNECTED come non pronto, compresi quelli di transizione. Registra l’ultimo stato visto perché l’errore si spieghi da solo.
Un ciclo limitato ha questo aspetto:
for i in $(seq 1 30); do
state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
if [ "$state" = "CONNECTED" ]; then exit 0; fi
sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1Trenta secondi sono un esempio, non un timeout universale. Scegli una scadenza dal percorso di autenticazione che il profilo usa davvero e conservala nel registro del flusso di lavoro.
Controlla lo stato e disconnetti per nome
Per fermare lo stesso profilo, chiama disconnect con lo stesso nome. Questo mantiene la richiesta ristretta e lascia in pace le altre configurazioni.
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'Tieni insieme il nome del profilo e il controllore nel registro del flusso di lavoro, con i controlli di autenticazione e completamento previsti. È quel registro che rende il comando verificabile sei mesi dopo.
Il comportamento all’avvio con il computer è un’altra modalità. Usa l’opzione di avvio documentata di Tunnelblick e la configurazione delle credenziali che si aspetta. Un comando eseguito in una sessione desktop con accesso effettuato e un servizio che parte con la macchina non condividono il contesto. Non dare per scontato che uno script che funziona mentre sei connesso girerà all’avvio. Prova il percorso di avvio a parte, con la stessa scadenza e la stessa registrazione.