Αποσυνδέστε ένα προφίλ OpenVPN GUI, όχι όλες τις σήραγγες
Μια σήραγγα που διαχειρίζεται το GUI θέλει εντολή GUI, μια σήραγγα υπηρεσίας θέλει έλεγχο υπηρεσίας. Προσδιορίστε ποιο πρόγραμμα κατέχει το προφίλ πριν γράψετε οποιοδήποτε σκριπτ.
Ένα σκριπτ αποσύνδεσης συνήθως αποτυγχάνει για έναν λόγο: απευθύνεται σε λάθος ιδιοκτήτη. Μια σήραγγα που διαχειρίζεται το OpenVPN GUI της κοινότητας ανήκει στη συνεδρία αυτού του GUI, μια σήραγγα που ξεκίνησε η υπηρεσία Windows ανήκει στην υπηρεσία, και το OpenVPN Connect δεν ανήκει σε κανένα από τα δύο. Περάστε αυτούς τους ελέγχους με τη σειρά και σταματήστε όταν ο ιδιοκτήτης είναι ασαφής. Η αποστολή εντολής kill επειδή ο ιδιοκτήτης ήταν αμφίβολος είναι ο τρόπος με τον οποίο η αποσύνδεση ενός προφίλ γίνεται διακοπή ολόκληρης της εγκατάστασης.
Για σύνδεση που διαχειρίζεται το GUI, η χρήσιμη εντολή είναι ένα μήνυμα προς το GUI, όχι ένα σήμα προς το openvpn.exe.
Πρώτα, προσδιορίστε τον ιδιοκτήτη
Δείτε ποιο πρόγραμμα εμφανίζει πραγματικά τη συνδεδεμένη κατάσταση πριν γράψετε οτιδήποτε. Ένα εικονίδιο στη γραμμή εργασιών σημαίνει ότι την κατέχει η συνεδρία του GUI. Μια καταχώριση υπηρεσίας σημαίνει ότι την κατέχει η υπηρεσία. Ένα ξεχωριστό παράθυρο εφαρμογής με δική του λίστα προφίλ δεν σημαίνει κανένα από τα δύο, και ισχύει η δική του διεπαφή ειδική για την έκδοση.
Ελέγξτε επίσης τον λογαριασμό και τη συνεδρία της επιφάνειας εργασίας. Μια προγραμματισμένη εργασία που εκτελείται ως άλλος χρήστης ή σε μη διαδραστική συνεδρία δεν πρέπει να θεωρείται ότι ελέγχει το GUI που βλέπει ένας συνδεδεμένος άνθρωπος. Αυτή η αναντιστοιχία παράγει μια εντολή που τερματίζεται καθαρά και δεν αλλάζει τίποτα, και αυτό είναι το πιο ακριβό είδος αποτυχίας για εντοπισμό από αρχείο καταγραφής.
Στη συνέχεια στείλτε την αποσύνδεση του ίδιου του ιδιοκτήτη
Με το GUI εγκατεστημένο στη διαδρομή του παραδείγματος και ένα προφίλ με όνομα office, ολόκληρη η εντολή είναι μία γραμμή:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect officeΑντικαταστήστε τη με την πραγματική διαδρομή εγκατάστασής σας και το ακριβές όνομα διαμόρφωσης, συμπεριλαμβανομένων των πεζών και κεφαλαίων όπως τα εμφανίζει το GUI. Η τεκμηρίωση εντολών του έργου απαριθμεί τα υποστηριζόμενα χειριστήρια GUI, και αυτό το παράδειγμα ανήκει μόνο στο OpenVPN GUI — δεν είναι εντολή για κάθε εφαρμογή που έχει OpenVPN στο όνομά της.
Για σήραγγα που ανήκει σε υπηρεσία, το σωστό χειριστήριο είναι η υπηρεσία, όχι το εκτελέσιμο του GUI. Εξετάστε την εγκατεστημένη υπηρεσία και τα προφίλ που διαχειρίζεται πριν σταματήσετε οτιδήποτε, γιατί μια διακοπή μπορεί να ρίξει πολλές σήραγγες μαζί και δεν θα πάρετε αποτέλεσμα ανά προφίλ.
Βεβαιωθείτε ότι δεν πέφτει τίποτα άλλο
Το GUI τεκμηριώνει επίσης μια εντολή disconnect_all, και το εύρος της είναι ακριβώς ο λόγος που είναι το λάθος εργαλείο για ένα σκριπτ που πρέπει να σταματήσει μόνο το office. Αν δελεαστείτε να τη χρησιμοποιήσετε για απλότητα, ρωτήστε τι άλλο είναι συνδεδεμένο σε αυτό το μηχάνημα και πώς θα το αντιληφθεί ο χρήστης.
Το taskkill /F /IM openvpn.exe είναι χειρότερο με δύο τρόπους. Επιλέγει διεργασίες με βάση το όνομα του εκτελέσιμου και επιβάλλει τερματισμό, άρα δεν εκφράζει ούτε όνομα προφίλ ούτε την κανονική ακολουθία αποσύνδεσης του ιδιοκτήτη. Το να το αποκαλείς ομαλό τερματισμό κρύβει και τα δύο προβλήματα πίσω από μία μόνο κατάσταση εξόδου.
Όποιο δρόμο κι αν ακολουθήσετε, επαληθεύστε το εύρος επίπτωσης πριν από την αλλαγή: απαριθμήστε τις συνδεδεμένες σήραγγες, σημειώστε ποιες πρέπει να επιβιώσουν και ελέγξτε τις ξανά μετά.
Επιβεβαιώστε την κατάσταση, όχι τον κωδικό εξόδου
Αφού ζητήσετε την αποσύνδεση, διαβάστε την κατάσταση της ονομασμένης σύνδεσης μέσω του ιδιοκτήτη της αντί να εμπιστευτείτε την τιμή επιστροφής της εντολής. Αν το επόμενο βήμα χρειάζεται το δίκτυο μετά την αποδόμηση, περιμένετε αυτή την αλλαγή κατάστασης με ρητό χρονικό όριο αντί να υποθέσετε ότι ο καθαρισμός τελείωσε όταν επέστρεψε η διεργασία. Ένα σκριπτ που συναγωνίζεται την αποδόμηση θα αποτυγχάνει κατά διαστήματα και το φταίξιμο θα πέσει στο VPN.
Αν η κατάσταση δεν αλλάξει ποτέ, ο ιδιοκτήτης μάλλον δεν είναι αυτός στον οποίο απευθυνθήκατε. Ελέγξτε ξανά τη συνεδρία και τον λογαριασμό πριν κλιμακώσετε σε ισχυρότερη εντολή.
Τι να βάλετε στο αρχείο καταγραφής
Καταγράψτε το όνομα του προφίλ, τον ιδιοκτήτη στον οποίο απευθυνθήκατε και το περιβάλλον εκκίνησης, καθώς και την κατάσταση που προέκυψε. Μην αδειάσετε την πλήρη διαμόρφωση ή τα διαπιστευτήρια στο αρχείο καταγραφής της εργασίας και μην καταγράψετε τη γραμμή εντολών αν περιέχει διαδρομή προς αρχείο με μυστικά.
Ένα μήνυμα σφάλματος που ονομάζει το προφίλ και το περιβάλλον αρκεί για να αναπαράγει το πρόβλημα ο επόμενος άνθρωπος. Ένα αρχείο καταγραφής που καταγράφει μόνο έναν γενικό κωδικό εξόδου τους στέλνει πίσω στην αρχή, και εκεί ακριβώς ξαναρχίζει η εικασία.