മൂന്ന് ചോദ്യങ്ങൾ ഇത് തീരുമാനിക്കുന്നു, മൂന്ന് മാത്രം. റീബൂട്ടിന് ശേഷവും നിലനിൽക്കുന്ന കണക്ഷൻ എൻട്രി ക്ലയന്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ സൃഷ്ടിക്കുന്നുണ്ടോ? സ്വന്തം ആർഗ്യുമെന്റ് പട്ടികയല്ലാതെ മറ്റെവിടെ നിന്നും രഹസ്യം എടുക്കാനാകുന്ന കമാൻഡ് ലൈൻ നൽകുന്നുണ്ടോ? അതിന്റെ ഐഡന്റിറ്റി ആവശ്യകത ഒരു മനുഷ്യനെ ബ്രൗസർ പ്രോംപ്റ്റിന് ഉത്തരം നൽകാൻ നിർബന്ധിക്കുന്നുണ്ടോ? ഈ ക്രമത്തിൽ ഉത്തരം നൽകുക, എന്നാൽ തിരഞ്ഞെടുപ്പ് രുചിയുടെ കാര്യമല്ലാതാകുന്നു, കാരണം ഷെഡ്യൂൾ ചെയ്ത ജോലിക്ക് മൂന്ന് ഉത്തരങ്ങളിൽ ഏറ്റവും ദുർബലമായത് അനുവദിക്കുന്നത്ര മാത്രമേ ഹെഡ്‌ലെസ് ആകാൻ കഴിയൂ.

ക്ലയന്റിനെ മൂന്ന് സ്ക്രിപ്റ്റ് ചെയ്യാവുന്ന പാളികളുമായി ചേർക്കുക

നേറ്റീവ് OS പ്രൊഫൈൽ, വെണ്ടർ CLI, GUI മാത്രമുള്ള ക്ലയന്റ്, ബ്രൗസർ-SSO ക്ലയന്റ് എന്നിവയ്ക്ക് നാല് വ്യത്യസ്ത സമീപനങ്ങൾ വേണം. ആദ്യ രണ്ടെണ്ണം മേൽനോട്ടമില്ലാത്ത റീബൂട്ടുകളെ അതിജീവിക്കുന്നു, മേൽനോട്ടമില്ലാത്ത റീബൂട്ടാണ് ഇതിന്റെ മുഴുവൻ കാര്യം. ബാക്കിയുള്ള രണ്ടെണ്ണത്തിന് സ്ക്രിപ്റ്റിന് മുൻപ് ഡിസൈൻ തീരുമാനം വേണം.

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

ഒന്നാം വഴി: പ്രൊഫൈൽ ഇതിനകം ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിന്റെ ഉടമസ്ഥതയിൽ

ഇതാണ് ഏറ്റവും വിലകുറഞ്ഞ വഴിയും മിക്ക ആളുകളും അവഗണിക്കുന്നതും. Windows-ൽ rasdial "Office" കണക്ട് ചെയ്യുന്നു, rasdial "Office" /disconnect അത് അടയ്ക്കുന്നു; rasphone -d "Office" അതേ എൻട്രി ഡയൽ-അപ്പ് ഇന്റർഫേസിലൂടെ നയിക്കുന്നു. macOS scutil --nc list ഉപയോഗിച്ച് സേവ് ചെയ്ത സേവനങ്ങൾ ലിസ്റ്റ് ചെയ്ത് scutil --nc start ഉപയോഗിച്ച് ഒന്ന് തുടങ്ങുന്നു. Linux ജോലി NetworkManager-ന് നൽകുന്നു.

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

ഈ ഇന്റർഫേസുകൾ OS-ന്റെ ഉടമസ്ഥതയിലുള്ള പ്രൊഫൈലുകൾ മാത്രമേ അറിയൂ, അതിനാൽ ഏതെങ്കിലും തേർഡ്-പാർട്ടി ക്ലയന്റിനെ നയിക്കാനാവില്ല. പ്രൊഫൈൽ ഇല്ലെങ്കിൽ അത് ഒരിക്കൽ സൃഷ്ടിച്ച്, ഓരോ പ്രവർത്തനത്തിലും വീണ്ടും സൃഷ്ടിക്കുന്നതിന് പകരം സ്ക്രിപ്റ്റിനെ പരിശോധിക്കാൻ അനുവദിക്കുക. സ്ക്രിപ്റ്റ് idempotent ആക്കുക: നിലവിലെ അവസ്ഥ വായിക്കുക, വിച്ഛേദിക്കപ്പെട്ടാൽ മാത്രം കണക്ട് ചെയ്യുക, എന്നിട്ട് ജോലിക്ക് യഥാർത്ഥത്തിൽ ആവശ്യമായ സ്വകാര്യ പേര് പരിശോധിക്കുക.

രണ്ടാം വഴി: വെണ്ടർ ഒരു കമാൻഡ് ലൈൻ നൽകുന്നു

ചില ക്ലയന്റുകൾ പൊതിയാൻ മതിയായ കമാൻഡ് ലൈൻ നൽകുന്നു: Cisco AnyConnect-ന് വർഷങ്ങളായി കണക്ഷൻ മാത്രമുള്ള സഹായി ഉണ്ട്, OpenConnect ഒരൊറ്റ ബൈനറിയിൽ നിന്ന് AnyConnect, GlobalProtect, Pulse പ്രോട്ടോക്കോളുകൾ സംസാരിക്കുന്നു. പ്രധാന ആവശ്യകത ഫ്ലാഗ് പട്ടികയല്ല, രഹസ്യം എവിടെ നിന്ന് വരുന്നു എന്നതാണ്, കാരണം ആർഗ്യുമെന്റ് പട്ടികയിലെ പാസ്‌വേഡ് പ്രോസസുകൾ ലിസ്റ്റ് ചെയ്യാൻ കഴിയുന്ന ആർക്കും വായിക്കാം.

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

FortiClient-നും ചില GlobalProtect ബിൽഡുകൾക്കും പിന്തുണയ്ക്കുന്ന CLI ഒട്ടുമില്ല, കമ്മ്യൂണിറ്റി ക്ലയന്റോ വെണ്ടർ ലൈസൻസുള്ള പകരമോ ഒരു സംഭരണ തീരുമാനമാണ്, പരിഹാരമല്ല. CI-യിൽ സേവന അക്കൗണ്ടിന് ആ ബൈനറിയിൽ തന്നെ അവകാശം നൽകുക, ഷെല്ലിൽ അല്ല, അങ്ങനെ കുത്തിവച്ച ആർഗ്യുമെന്റ് root കമാൻഡ് ആകാതിരിക്കാൻ.

മൂന്നാം വഴി: GUI ഓട്ടോമേഷൻ, എന്തുകൊണ്ട് അത് അവസാനം

ഔദ്യോഗിക ക്ലയന്റിന് ഇന്റർഫേസ് ഇല്ലാത്തപ്പോൾ സ്ക്രിപ്റ്റുകൾ വിൻഡോ സന്ദേശങ്ങളിലൂടെയോ SendKeys ഉപയോഗിച്ചോ ബട്ടണുകൾ ക്ലിക്ക് ചെയ്യുന്നു. ഇത് പതിപ്പിനോടും ഭാഷയോടും ദുർബലമാണ്, പകുതി കണക്ട് ചെയ്ത സെഷൻ അവശേഷിപ്പിക്കാം, തെറ്റായ ഭാഷയിൽ ഡയലോഗ് വന്നാൽ നിശബ്ദമായി പരാജയപ്പെടുന്നു. ഈ വഴി തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ ക്ലയന്റ് പതിപ്പ് പിൻ ചെയ്യുക, പിന്നീട് ലഭിച്ച കണക്ഷൻ അവസ്ഥ സ്ഥിരീകരിക്കുക, സ്ക്രിപ്റ്റിന് അടുത്ത് രേഖപ്പെടുത്തിയ മാനുവൽ പകരം വഴി സൂക്ഷിക്കുക.

ക്ലയന്റിന്റെ പ്രോസസ് കൊന്ന് ബലമായി വിച്ഛേദിക്കുന്നതിനും ഇതേ മുൻകരുതൽ ബാധകമാണ്. ടണൽ പ്രോസസിനെക്കാൾ കൂടുതൽ കാലം നിലനിൽക്കാം, അല്ലെങ്കിൽ ഒരു സൂപ്പർവൈസർ അത് പുനരാരംഭിക്കാം, അതിനാൽ കൊന്ന്-പുനരാരംഭിക്കുക എന്നതും വിശ്വസനീയമായ പുനഃസജ്ജീകരണമല്ല.

ടണൽ ഉയർന്നതിന് ശേഷം എന്ത് തകരുന്നു

വിജയകരമായ ഡയൽ പ്രാമാണീകരണം മാത്രം തെളിയിക്കുന്നു, മറ്റൊന്നുമില്ല. ജോലി നിലനിൽക്കുന്നതിന് കാരണമായ വിഭവം അതിന്റെ സ്വന്തം പ്രോട്ടോക്കോളും ചെറിയ സമയപരിധിയും ഉപയോഗിച്ച് പരിശോധിക്കുക, പരാജയ സന്ദേശത്തിൽ ഘട്ടം പേരിടുക. നിങ്ങളുടെ ഡെസ്ക്ടോപ്പിൽ കാണുന്ന പ്രൊഫൈലുകളും സർട്ടിഫിക്കറ്റുകളും സംഭരിച്ച ക്രെഡൻഷ്യലുകളും സേവന സെഷന് അദൃശ്യമായിരിക്കാം, അതിനാൽ അതിൽ വിശ്വസിക്കുന്നതിന് മുൻപ് ഷെഡ്യൂളറുടെ സ്വന്തം അക്കൗണ്ടിൽ ജോലി ഒരിക്കൽ പ്രവർത്തിപ്പിക്കുക.

വീണ്ടും ശ്രമങ്ങൾ പരിമിതപ്പെടുത്തുക. നിരസിക്കപ്പെട്ട ക്രെഡൻഷ്യലുകൾ ആവർത്തിക്കുന്ന ലൂപ്പ് അക്കൗണ്ടുകൾ ലോക്ക് ചെയ്യുന്നു, MFA പ്രോംപ്റ്റിന് രജിസ്ട്രേഷൻ ഡിസൈൻ ഇല്ലാതെ ഹെഡ്‌ലെസ് ജോലിക്ക് ഉത്തരം നൽകാനാവില്ല; ബ്രൗസർ SSO പ്രവാഹത്തിനെതിരായ സ്ക്രിപ്റ്റ് ആവർത്തനങ്ങൾ ശ്രമങ്ങൾ കത്തിക്കുന്നു മാത്രം. ഫ്ലീറ്റിനായി MDM വഴി എത്തിക്കുന്ന VPN പേലോഡ് അല്ലെങ്കിൽ കോൺഫിഗറേഷൻ പ്രൊഫൈൽ തിരഞ്ഞെടുക്കുക, അവിടെ പ്ലാറ്റ്ഫോം ക്രെഡൻഷ്യലുകളുടെ ജീവിതചക്രം കൈവശം വയ്ക്കുന്നു, അങ്ങനെ കൈകാര്യം ചെയ്യാനാകാത്ത ക്ലയന്റുകൾക്ക് സ്ക്രിപ്റ്റുകൾ സൂക്ഷിക്കുക.

എക്സിറ്റ് കോഡും ആദ്യം പരാജയപ്പെട്ട വിഭവവും രേഖപ്പെടുത്തുക, സ്ക്രിപ്റ്റ് ഓടി എന്ന വസ്തുതയല്ല. ആ ഒരു വരിയാണ് ഷെഡ്യൂളർ മുന്നറിയിപ്പിനെ അഞ്ച് മിനിറ്റ് രോഗനിർണയമാക്കി മാറ്റുന്നത്.

അനുബന്ധ ലേഖനങ്ങൾ