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 exposesWhat to scriptWhat still bites
OS-native connection entryrasdial, scutil --nc, nmcliTunnel is up before DNS and routes settle
Vendor CLI reading stdinCLI wrapped by the scheduler, secret from the credential storePrompt text changes between releases
GUI onlyPinned version plus a state assertionLocale 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 Office

Tieto 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.com

FortiClient 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.

Súvisiace články