Tre spørsmål avgjer dette, og berre tre. Opprettar klienten ei tilkoplingsoppføring i operativsystemet som overlever ein omstart? Leverer han ei kommandolinje som kan ta ei hemmelegheit frå noko anna enn argumentlista si? Tvingar identitetskravet ein person til å svare på ein nettlesarførespurnad? Svar i den rekkjefølgja, og valet sluttar å vere ei smakssak, fordi ein planlagd jobb berre kan vere så hovudlaus som det svakaste av dei tre svara tillèt.

Tilpass klienten til dei tre skriptbare laga

Ein innebygd OS-profil, ein leverandør-CLI, ein klient med berre GUI og ein klient med nettlesar-SSO treng fire ulike tilnærmingar. Dei to første overlever ubemanna omstartar, og ubemanna omstartar er heile poenget. Dei to andre treng ei designavgjerd før dei treng eit 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

Veg ein: operativsystemet eig allereie profilen

Dette er den billegaste vegen og den dei fleste overser. På Windows koplar rasdial "Office" til, og rasdial "Office" /disconnect lukkar han; rasphone -d "Office" styrer same oppføringa gjennom oppringingsgrensesnittet. macOS listar lagra tenester med scutil --nc list og startar ei 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

Desse grensesnitta kjenner berre profilar som OS eig, så dei kan ikkje styre ein vilkårleg tredjepartsklient. Når profilen manglar, opprett han ein gong og lat skriptet kontrollere han i staden for å gjenskape han ved kvar køyring. Gjer skriptet idempotent: les gjeldande tilstand, kopla berre til når det er fråkopla, og test deretter det private namnet jobben faktisk treng.

Veg to: leverandøren leverer ei kommandolinje

Nokre klientar eksponerer nok kommandolinje til å kunne pakkast inn: Cisco AnyConnect har i årevis hatt ein hjelpar berre for tilkopling, og OpenConnect snakkar AnyConnect-, GlobalProtect- og Pulse-protokollane frå ei binærfil. Kravet som tel er ikkje flagglista, men kvar hemmelegheita kjem frå, fordi eit passord i argumentlista kan lesast av alle som kan liste prosessar.

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øtta CLI i det heile, og ein fellesskapsklient eller ei leverandørlisensiert erstatning er ei innkjøpsavgjerd, ikkje ein omveg. I CI gir du tenestekontoen rettar til nettopp den binærfilen og ikkje til eit skal, slik at eit injisert argument ikkje kan bli ein root-kommando.

Veg tre: GUI-automatisering, og kvifor ho kjem sist

Når den offisielle klienten ikkje har noko grensesnitt, klikkar skript på knappar gjennom vindauge-meldingar eller SendKeys. Det er versjons- og språkømfintleg, det kan etterlate ei halvt tilkopla økt, og det feilar stille når ein dialog dukkar opp på feil språk. Vel du denne vegen, fest klientversjonen, stadfest den resulterande tilkoplingstilstanden etterpå, og hald ei dokumentert manuell reserveløysing ved sida av skriptet.

Den same varsemda gjeld for å kopla frå ein klient med makt ved å drepe prosessen. Tunnelen kan overleve prosessen, eller ein overvakar kan starte han på nytt, så drep-og-restart er heller ikkje ei påliteleg nullstilling.

Kva som ryker etter at tunnelen er oppe

Ein vellukka oppringing beviser autentisering og ingenting anna. Test ressursen jobben finst for å nå, med sin eigen protokoll og eit kort tidsavbrot, og namnge steget i feilmeldinga. Profilar, sertifikat og lagra påloggingsdata som er synlege på skrivebordet ditt, kan vere usynlege for tenesteøkta, så køyr jobben ein gong under planleggjaren sin eigen konto før du stolar på han.

Avgrens gjenforsøka. Ei løkke som gientek avviste påloggingsdata, låser kontoar, og ein MFA-førespurnad kan ein hovudlaus jobb ikkje svare på utan ein registreringsdesign; skripta gjenforsøk mot ein nettlesar-SSO-straum brenn berre forsøk. Føretrekk ein VPN-nyttelast levert via MDM eller ein konfigurasjonsprofil for ein flåte, der plattforma eig livssyklusen til påloggingsdataa, og hald skript for klientane som ikkje kan styrast slik.

Logg utgangskoden og den første ressursen som feilar, ikkje at skriptet køyrde. Den eine linja er det som gjer eit planleggjarvarsel til ein diagnose på fem minutt.

Relaterte artiklar