Tre spørsmål avgjør dette, og bare tre. Oppretter klienten en tilkoblingsoppføring i operativsystemet som overlever en omstart? Leverer den en kommandolinje som kan ta en hemmelighet fra noe annet enn argumentlisten sin? Tvinger identitetskravet en person til å svare på en nettleserforespørsel? Svar i den rekkefølgen, og valget slutter å være en smakssak, fordi en planlagt jobb bare kan være så hodeløs som det svakeste av de tre svarene tillater.

Tilpass klienten til de tre skriptbare lagene

En innebygd OS-profil, en leverandør-CLI, en klient med bare GUI og en klient med nettleser-SSO trenger fire ulike tilnærminger. De to første overlever ubemannede omstarter, og ubemannede omstarter er hele poenget. De to andre trenger en designbeslutning før de trenger et 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

Vei en: operativsystemet eier allerede profilen

Dette er den billigste veien og den de fleste overser. På Windows kobler rasdial "Office" til, og rasdial "Office" /disconnect lukker den; rasphone -d "Office" styrer samme oppføring gjennom oppringingsgrensesnittet. macOS lister lagrede tjenester med scutil --nc list og starter en med scutil --nc start. Linux gir jobben til NetworkManager.

rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show Office

Disse grensesnittene kjenner bare profiler som OS eier, så de kan ikke styre en vilkårlig tredjepartsklient. Når profilen mangler, opprett den en gang og la skriptet kontrollere den i stedet for å gjenskape den ved hver kjøring. Gjør skriptet idempotent: les gjeldende tilstand, koble bare til når det er frakoblet, og test deretter det private navnet jobben faktisk trenger.

Vei to: leverandøren leverer en kommandolinje

Noen klienter eksponerer nok kommandolinje til å kunne pakkes inn: Cisco AnyConnect har i årevis hatt en hjelper kun for tilkobling, og OpenConnect snakker AnyConnect-, GlobalProtect- og Pulse-protokollene fra en binærfil. Kravet som betyr noe er ikke flagglisten, men hvor hemmeligheten kommer fra, fordi et passord i argumentlisten kan leses av alle som kan liste prosesser.

printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
  --user "$VPN_USER" --passwd-on-stdin vpn.example.com

FortiClient og enkelte GlobalProtect-bygg har ingen støttet CLI i det hele tatt, og en fellesskapsklient eller en leverandørlisensiert erstatning er en innkjøpsbeslutning, ikke en omvei. I CI gir du tjenestekontoen rettigheter til nettopp den binærfilen og ikke til et skall, slik at et injisert argument ikke kan bli en root-kommando.

Vei tre: GUI-automatisering, og hvorfor den kommer sist

Når den offisielle klienten ikke har noe grensesnitt, klikker skript på knapper gjennom vindusmeldinger eller SendKeys. Det er versjons- og språkømfintlig, det kan etterlate en halvt tilkoblet økt, og det feiler stille når en dialog dukker opp på feil språk. Hvis du velger denne veien, fest klientversjonen, bekreft den resulterende tilkoblingstilstanden etterpå, og hold en dokumentert manuell reserveløsning ved siden av skriptet.

Den samme forsiktigheten gjelder for å koble fra en klient med makt ved å drepe prosessen. Tunnelen kan overleve prosessen, eller en overvåker kan starte den på nytt, så drep-og-restart er heller ikke en pålitelig nullstilling.

Hva som ryker etter at tunnelen er oppe

En vellykket oppringing beviser autentisering og ingenting annet. Test ressursen jobben finnes for å nå, med sin egen protokoll og en kort tidsavbrudd, og navngi steget i feilmeldingen. Profiler, sertifikater og lagrede påloggingsdata som er synlige på skrivebordet ditt, kan være usynlige for tjenesteøkten, så kjør jobben en gang under planleggerens egen konto før du stoler på den.

Begrens gjenforsøkene. En løkke som gjentar avviste påloggingsdata, låser kontoer, og en MFA-forespørsel kan en hodeløs jobb ikke svare på uten en registreringsdesign; skriptede gjenforsøk mot en nettleser-SSO-flyt brenner bare forsøk. Foretrekk en VPN-nyttelast levert via MDM eller en konfigurasjonsprofil for en flåte, der plattformen eier livssyklusen til påloggingsdataene, og behold skript for klientene som ikke kan styres slik.

Logg utgangskoden og den første ressursen som feiler, ikke at skriptet kjørte. Den ene linjen er det som gjør en planleggervarsel til en fem minutters diagnose.

Relaterte artikler