ત્રણ પ્રશ્નો આ નક્કી કરે છે, અને ફક્ત ત્રણ. શું ક્લાયન્ટ ઓપરેટિંગ સિસ્ટમમાં એવી કનેક્શન એન્ટ્રી બનાવે છે જે રીબૂટ પછી પણ ટકે? શું તે એવી કમાન્ડ લાઇન આપે છે જે તેની આર્ગ્યુમેન્ટ સૂચિ સિવાય બીજે ક્યાંકથી રહસ્ય લઈ શકે? શું તેની ઓળખની માંગ માણસને બ્રાઉઝર પ્રોમ્પ્ટનો જવાબ આપવા મજબૂર કરે છે? આ ક્રમમાં જવાબ આપો અને પસંદગી સ્વાદની બાબત રહેતી નથી, કારણ કે નિર્ધારિત કામ ફક્ત ત્રણ જવાબોમાંના સૌથી નબળા જેટલું જ હેડલેસ હોઈ શકે.

ક્લાયન્ટને ત્રણ સ્ક્રિપ્ટયોગ્ય સ્તરો સાથે મેળવો

સ્થાનિક 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 દ્વારા બટન પર ક્લિક કરે છે. તે આવૃત્તિ અને ભાષા પ્રત્યે નાજુક છે, અડધું જોડાયેલું સત્ર છોડી શકે છે, અને ખોટી ભાષામાં સંવાદ દેખાય ત્યારે શાંતિથી નિષ્ફળ જાય છે. જો આ માર્ગ લો તો ક્લાયન્ટ આવૃત્તિ પિન કરો, પછી પરિણામી કનેક્શન સ્થિતિ ચકાસો, અને સ્ક્રિપ્ટ પાસે દસ્તાવેજીકૃત મેન્યુઅલ વૈકલ્પિક ઉપાય રાખો.

ક્લાયન્ટની પ્રોસેસ મારીને જબરદસ્તીથી ડિસ્કનેક્ટ કરવા માટે પણ આ જ સાવધાની લાગુ પડે છે. ટનલ પ્રોસેસ કરતાં વધુ ટકી શકે છે, અથવા સુપરવાઇઝર તેને ફરી શરૂ કરી શકે છે, તેથી kill-and-restart પણ વિશ્વસનીય રીસેટ નથી.

ટનલ ઊભી થયા પછી શું તૂટે છે

સફળ ડાયલ ફક્ત પ્રમાણીકરણ સાબિત કરે છે, બીજું કંઈ નહીં. જે સંસાધન માટે કામ અસ્તિત્વમાં છે તેને તેના પોતાના પ્રોટોકોલ અને ટૂંકી સમયમર્યાદા સાથે ચકાસો, અને નિષ્ફળતાના સંદેશમાં તબક્કાનું નામ આપો. તમારા ડેસ્કટોપ પર દેખાતી પ્રોફાઇલ, પ્રમાણપત્રો અને સંગ્રહિત ઓળખપત્રો સેવા સત્ર માટે અદૃશ્ય હોઈ શકે છે, તેથી તેના પર ભરોસો કરતા પહેલાં શેડ્યુલરના પોતાના ખાતા હેઠળ કામ એક વાર ચલાવો.

ફરી પ્રયાસો મર્યાદિત કરો. નકારાયેલા ઓળખપત્રને પુનરાવર્તિત કરતો લૂપ ખાતાં લૉક કરે છે, અને MFA પ્રોમ્પ્ટનો જવાબ હેડલેસ કામ નોંધણી ડિઝાઇન વિના આપી શકતું નથી; બ્રાઉઝર SSO પ્રવાહ સામે સ્ક્રિપ્ટેડ પુનઃપ્રયાસો ફક્ત પ્રયાસો બગાડે છે. ફ્લીટ માટે MDM દ્વારા પહોંચાડાયેલ VPN પેલોડ કે કન્ફિગરેશન પ્રોફાઇલ પસંદ કરો, જ્યાં પ્લેટફોર્મ ઓળખપત્રોના જીવનચક્રનું માલિક છે, અને જે ક્લાયન્ટ આ રીતે સંચાલિત ન થઈ શકે તેમના માટે સ્ક્રિપ્ટ રાખો.

એક્ઝિટ કોડ અને પ્રથમ નિષ્ફળ સંસાધન લોગ કરો, સ્ક્રિપ્ટ ચાલી તે હકીકત નહીં. તે એક જ લાઇન શેડ્યુલર ચેતવણીને પાંચ મિનિટના નિદાનમાં ફેરવે છે.

સંબંધિત લેખો