Müştərinin API və ya CLI-si olmadıqda VPN girişini avtomatlaşdırın
Skript yolunu müştərinin nə təqdim etdiyinə görə seçin: əməliyyat sistemi tərəfindən saxlanılan profil, stdin-dən sirr oxuyan satıcı CLI-si və ya son çarə kimi GUI avtomatlaşdırması.
Bunu üç sual həll edir və yalnız üç. Müştəri yenidən başlatmadan sonra qalan əməliyyat sistemi bağlantı qeydi yaradırmı? Arqument siyahısından başqa yerdən sirr götürə bilən komanda sətri təqdim edirmi? Kimlik tələbi insanı brauzer sorğusuna cavab verməyə məcbur edirmi? Bu sıra ilə cavab verin və seçim zövq məsələsi olmaqdan çıxır, çünki planlaşdırılmış iş yalnız bu üç cavabın ən zəifinin imkan verdiyi qədər başsız ola bilər.
Müştərini üç skriptlənə bilən qat ilə uyğunlaşdırın
Yerli OS profili, satıcı CLI-si, yalnız GUI-li müştəri və brauzer-SSO müştərisi dörd fərqli yanaşma tələb edir. İlk ikisi nəzarətsiz yenidən başlatmalara davam gətirir və nəzarətsiz yenidən başlatma bütün məsələnin mahiyyətidir. Digər ikisi skriptdən əvvəl dizayn qərarı tələb edir.
| What the client exposes | What to script | What still bites |
|---|---|---|
| OS-native connection entry | rasdial, scutil --nc, nmcli | Tunnel is up before DNS and routes settle |
| Vendor CLI reading stdin | CLI wrapped by the scheduler, secret from the credential store | Prompt text changes between releases |
| GUI only | Pinned version plus a state assertion | Locale and DPI break the click targets |
Birinci yol: profili artıq əməliyyat sistemi saxlayır
Bu ən ucuz yoldur və çoxlarının gözdən qaçırdığı yoldur. Windows-da rasdial "Office" qoşulur, rasdial "Office" /disconnect isə bağlayır; rasphone -d "Office" həmin qeydi yığım interfeysi vasitəsilə idarə edir. macOS yadda saxlanılan xidmətləri scutil --nc list ilə sadalayır və birini scutil --nc start ilə başladır. Linux isə işi NetworkManager-ə verir.
rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show OfficeBu interfeyslər yalnız OS-un saxladığı profilləri tanıyır, ona görə ixtiyari üçüncü tərəf müştərisini idarə edə bilmirlər. Profil yoxdursa, onu bir dəfə yaradın və skript hər işə salmada yenidən yaratmaq əvəzinə onun mövcudluğunu yoxlasın. Skripti idempotent edin: cari vəziyyəti oxuyun, yalnız kəsilmiş olduqda qoşulun, sonra işin həqiqətən ehtiyac duyduğu özəl adı yoxlayın.
İkinci yol: satıcı komanda sətri təqdim edir
Bəzi müştərilər sarğıya salmaq üçün kifayət qədər komanda sətri açır: Cisco AnyConnect illərlə yalnız qoşulma üçün köməkçi daşıyıb, OpenConnect isə AnyConnect, GlobalProtect və Pulse protokollarını bir binar fayldan danışır. Əhəmiyyətli tələb bayraq siyahısı deyil, sirrin haradan gəldiyidir, çünki arqument siyahısındakı parolu prosesləri sadalaya bilən hər kəs oxuya bilər.
printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
--user "$VPN_USER" --passwd-on-stdin vpn.example.comFortiClient və bəzi GlobalProtect buraxılışlarında ümumiyyətlə dəstəklənən CLI yoxdur, icma müştərisi və ya satıcı lisenziyalı əvəz isə satınalma qərarıdır, çözüm deyil. CI-də xidmət hesabına qabığa deyil, məhz həmin binar fayla hüquq verin ki, yeridilmiş arqument root əmrinə çevrilə bilməsin.
Üçüncü yol: GUI avtomatlaşdırması və niyə axırıncıdır
Rəsmi müştərinin interfeysi olmadıqda skriptlər pəncərə mesajları və ya SendKeys ilə düymələrə klikləyir. Bu versiyaya və dilə həssasdır, yarımqoşulmuş sessiya qoya bilər və dialoq yanlış dildə görünəndə səssizcə uğursuz olur. Bu yolu seçirsinizsə, müştəri versiyasını bərkidin, nəticədə yaranan bağlantı vəziyyətini sonra təsdiqləyin və skriptin yanında sənədləşdirilmiş əl ilə ehtiyat variant saxlayın.
Eyni ehtiyat müştərini prosesini öldürməklə zorla ayırmaq üçün də keçərlidir. Tunel prosesdən uzun yaşaya bilər və ya nəzarətçi onu yenidən başlada bilər, ona görə öldür-yaşat etibarlı sıfırlama deyil.
Tunel qalxdıqdan sonra nə pozulur
Uğurlu yığım yalnız autentifikasiyanı sübut edir, başqa heç nəyi. İşin çatmaq üçün mövcud olduğu resursu öz protokolu və qısa taym-autu ilə yoxlayın və uğursuzluq mesajında mərhələni adlandırın. Masaüstünüzdə görünən profillər, sertifikatlar və saxlanılan etimadnamələr xidmət sessiyası üçün görünməz ola bilər, ona görə işi etibar etməzdən əvvəl bir dəfə planlaşdırıcının öz hesabı altında işə salın.
Təkrar cəhdləri məhdudlaşdırın. Rədd edilmiş etimadnaməni təkrarlayan dövrə hesabları bağlayır, MFA sorğusuna isə başsız iş qeydiyyat dizaynı olmadan cavab verə bilməz; brauzer SSO axınına qarşı skript təkrar cəhdləri sadəcə cəhdləri yandırır. Donanma üçün MDM ilə çatdırılan VPN yükünü və ya konfiqurasiya profilini üstün tutun, orada etimadnamənin həyat dövrünü platforma saxlayır və bu üsulla idarə oluna bilməyən müştərilər üçün skriptləri saxlayın.
Çıxış kodunu və ilk uğursuz resursu qeyd edin, skriptin işləməsi faktını yox. Məhz o bir sətir planlaşdırıcı xəbərdarlığını beş dəqiqəlik diaqnoza çevirir.