Automatizujte prihlásenie do VPN, keď klient nemá API ani CLI
Vyberte cestu skriptu podľa toho, čo klient ponúka: profil vlastnený operačným systémom, CLI dodávateľa, ktoré číta tajomstvo zo stdin, alebo GUI automatizácia ako posledná možnosť.
Rozhodujú o tom tri otázky, a iba tri. Vytvára klient položku pripojenia v operačnom systéme, ktorá prežije reštart? Dodáva príkazový riadok, ktorý dokáže vziať tajomstvo z niečoho iného než zo svojho zoznamu argumentov? Núti jeho požiadavka na identitu človeka odpovedať na výzvu v prehliadači? Odpovedzte v tomto poradí a voľba prestane byť vecou vkusu, pretože naplánovaná úloha môže byť len taká bezhlavá, ako to najslabšia z troch odpovedí dovolí.
Zosúlaďte klienta s tromi skriptovateľnými vrstvami
Natívny profil OS, CLI dodávateľa, klient len s GUI a klient s prehliadačovým SSO potrebujú štyri rôzne prístupy. Prvé dva prežijú reštarty bez dozoru a reštart bez dozoru je celý zmysel. Zvyšné dva potrebujú rozhodnutie o návrhu skôr, než potrebujú skript.
| 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 |
Cesta prvá: profil už vlastní operačný systém
Toto je najlacnejšia cesta a tá, ktorú väčšina prehliadne. Vo Windows sa rasdial "Office" pripojí a rasdial "Office" /disconnect ho zavrie; rasphone -d "Office" vedie tú istú položku cez rozhranie vytáčaného pripojenia. macOS vypíše uložené služby pomocou scutil --nc list a jednu spustí pomocou scutil --nc start. Linux odovzdá prácu NetworkManageru.
rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show OfficeTieto rozhrania poznajú len profily vlastnené OS, takže nedokážu ovládať ľubovoľného klienta tretej strany. Keď profil chýba, vytvorte ho raz a nechajte skript, aby ho skontroloval, namiesto toho, aby ho znovu vytváral pri každom spustení. Urobte skript idempotentný: prečítajte aktuálny stav, pripájajte sa len pri odpojení a potom otestujte súkromné meno, ktoré úloha skutočne potrebuje.
Cesta druhá: dodávateľ dodáva príkazový riadok
Niektorí klienti ponúkajú dosť príkazového riadka na to, aby sa dali obaliť: Cisco AnyConnect má roky pomocníka len na pripojenie a OpenConnect hovorí protokolmi AnyConnect, GlobalProtect a Pulse z jedného binárneho súboru. Dôležitá požiadavka nie je zoznam prepínačov, ale odkiaľ tajomstvo pochádza, pretože heslo v zozname argumentov prečíta každý, kto dokáže vypísať procesy.
printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
--user "$VPN_USER" --passwd-on-stdin vpn.example.comFortiClient a niektoré zostavenia GlobalProtect nemajú vôbec podporované CLI a komunitný klient alebo náhrada licencovaná dodávateľom je rozhodnutie o nákupe, nie obchádzka. V CI dajte servisnému účtu práva na presne tento binárny súbor, nie na shell, aby sa vložený argument nemohol stať príkazom roota.
Cesta tretia: GUI automatizácia a prečo je posledná
Keď oficiálny klient nemá rozhranie, skripty klikajú na tlačidlá cez správy okien alebo SendKeys. Je to krehké voči verzii a jazyku, môže zanechať napoly pripojenú reláciu a ticho zlyhá, keď sa dialóg objaví v nesprávnom jazyku. Ak touto cestou idete, zafixujte verziu klienta, potom overte výsledný stav pripojenia a majte pri skripte zdokumentovanú ručnú zálohu.
Rovnaká opatrnosť platí pre násilné odpojenie klienta zabitím jeho procesu. Tunel môže proces prežiť alebo ho správca reštartuje, takže zabiť a reštartovať tiež nie je spoľahlivý reset.
Čo sa pokazí po nadviazaní tunela
Úspešné vytáčanie dokazuje iba autentifikáciu a nič iné. Otestujte prostriedok, kvôli ktorému úloha existuje, jeho vlastným protokolom a krátkym časovým limitom, a v správe o zlyhaní pomenujte fázu. Profily, certifikáty a uložené prihlasovacie údaje viditeľné na vašej ploche môžu byť pre reláciu služby neviditeľné, preto úlohu raz spustite pod vlastným účtom plánovača, kým jej uveríte.
Obmedzte opakované pokusy. Slučka, ktorá opakuje odmietnuté prihlasovacie údaje, zamyká účty, a na výzvu MFA nedokáže bezhlavá úloha odpovedať bez návrhu registrácie; skriptované opakovania proti prehliadačovému SSO toku len spália pokusy. Uprednostnite VPN dátovú záťaž doručovanú cez MDM alebo konfiguračný profil pre flotilu, kde životný cyklus údajov vlastní platforma, a skripty si nechajte pre klientov, ktorých takto spravovať nemožno.
Zaznamenajte návratový kód a prvý zlyhávajúci prostriedok, nie fakt, že skript bežal. Práve ten jediný riadok mení upozornenie plánovača na diagnózu za päť minút.