Disconnetti un solo profilo di OpenVPN GUI, non tutti i tunnel
Un tunnel gestito dalla GUI richiede un comando della GUI, un tunnel gestito da un servizio richiede il controllo del servizio. Stabilisci quale programma possiede il profilo prima di scrivere qualsiasi script.
Uno script di disconnessione di solito fallisce per un motivo: si rivolge al proprietario sbagliato. Un tunnel gestito dalla OpenVPN GUI della comunità appartiene alla sessione di quella GUI, un tunnel avviato da un servizio Windows appartiene al servizio, e OpenVPN Connect non appartiene a nessuno dei due. Segui questi controlli in ordine e fermati quando il proprietario non è chiaro. Inviare un comando kill perché il proprietario era ambiguo è esattamente il modo in cui la disconnessione di un profilo diventa un’interruzione di tutto il sito.
Per una connessione gestita dalla GUI, il comando utile è un messaggio alla GUI, non un segnale a openvpn.exe.
Prima individua il proprietario
Guarda quale programma mostra davvero lo stato connesso prima di scrivere qualsiasi cosa. Un’icona nella barra delle applicazioni significa che la sessione della GUI lo possiede. Una voce di servizio significa che lo possiede il servizio. Una finestra applicativa separata con il proprio elenco di profili non significa né l’uno né l’altro, e vale la sua interfaccia specifica per la versione.
Controlla anche l’account e la sessione desktop. Un’attività pianificata che viene eseguita come un altro utente, o in una sessione non interattiva, non va data per scontata come controllo della GUI che vede una persona connessa. Questo disallineamento produce un comando che termina in modo pulito e non cambia nulla, ed è il tipo di guasto più costoso da diagnosticare da un registro.
Poi invia la disconnessione propria del proprietario
Con la GUI installata nel percorso dell’esempio e un profilo chiamato office, il comando completo è una riga sola:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect officeSostituiscila con il tuo percorso di installazione reale e il nome esatto della configurazione, comprese le maiuscole come le mostra la GUI. La documentazione dei comandi del progetto elenca i controlli della GUI supportati, e questo esempio appartiene solo a OpenVPN GUI — non è un comando per ogni applicazione che porta OpenVPN nel nome.
Per un tunnel di proprietà di un servizio, il controllo corretto è il servizio, non il binario della GUI. Ispeziona il servizio installato e i profili che gestisce prima di fermare qualcosa, perché un arresto può far cadere più tunnel insieme e non otterrai un risultato per profilo.
Verifica che non cada nient’altro
La GUI documenta anche un comando disconnect_all, e la sua portata è proprio il motivo per cui è lo strumento sbagliato per uno script che deve fermare solo office. Se la tentazione di usarlo per semplicità si fa sentire, chiediti cos’altro è connesso su quella macchina e come l’utente se ne accorgerà.
taskkill /F /IM openvpn.exe è peggiore sotto due aspetti. Seleziona i processi per nome dell’eseguibile e impone la terminazione, quindi non esprime né un nome di profilo né la sequenza di disconnessione normale del proprietario. Chiamarlo arresto ordinato nasconde entrambi i problemi dietro un unico codice di uscita.
Qualunque strada scegli, verifica l’ampiezza dell’impatto prima della modifica: elenca i profili connessi, annota quali devono sopravvivere e ricontrollali dopo.
Conferma lo stato, non il codice di uscita
Dopo aver richiesto la disconnessione, leggi lo stato della connessione indicata tramite il suo proprietario invece di fidarti del valore di ritorno del comando. Se il passo successivo richiede la rete dopo lo smontaggio, attendi quel cambio di stato con un timeout esplicito invece di dare per scontato che la pulizia sia finita quando il processo è tornato. Uno script che corre contro lo smontaggio fallirà a intermittenza e la colpa ricadrà sulla VPN.
Se lo stato non cambia mai, probabilmente il proprietario non è quello a cui ti sei rivolto. Ricontrolla la sessione e l’account prima di passare a un comando più forte.
Cosa mettere nel registro
Registra il nome del profilo, il proprietario a cui ti sei rivolto e il contesto di avvio, oltre allo stato risultante. Non riversare la configurazione completa o le credenziali nel registro dell’attività, e non registrare la riga di comando se contiene un percorso verso un file con segreti.
Un messaggio di errore che nomina il profilo e il contesto basta perché la persona successiva riproduca il problema. Un registro che annota solo un codice di uscita generico li rimanda all’inizio, ed è proprio lì che le supposizioni ricominciano.