Ձեր սկրիպտը միացնում է VPN-ը, բայց չի նախապատրաստում այն
Մեկնարկի հրամանին անհրաժեշտ է միացում, որն արդեն գոյություն ունի և հաստատված է։ Առանձնացրե՛ք նախապատրաստումը սեսիայի կառավարումից, այլապես սկրիպտը կաշխատի միայն ձեր Mac-ում։
Դուք գրում եք սկրիպտ, որը կատարում է scutil --nc start՝ միացման անվան հետ, այն աշխատում է ձեր Mac-ում և ձախողվում է գրասենյակի յուրաքանչյուր նոր տեղադրված մեքենայում։ Սկրիպտը կոտրված չէ։ Նրանից պահանջում են մի բան, որ նա երբեք չէր կարող անել՝ գոյություն ունեցող միացումը միացնելը նույն գործողությունը չէ, ինչ նորը ստեղծելը։
Նախապատրաստումը և սեսիայի կառավարումը երկու աշխատանք են՝ երկու սեփականատերով, և հակառակը ենթադրող աշխատահոսքը կանցնի բոլոր թեստերը այն մեքենայում, որտեղ գրվել է։
Ինչի հետ է իրականում խոսում մեկնարկի հրամանը
Սեսիայի կառավարման հրամանը դիմում է կոնֆիգուրացիայի, որն արդեն գոյություն ունի և արդեն հաստատված է։ Այն խնդրում է համակարգից բարձրացնել այդ անվանված միացումը՝ օգտագործելով ավելի վաղ պահված սերվերի կարգավորումները, ինքնության հղումները և քաղաքականությունը։ Եթե դրանք երբեք չեն տեղադրվել, մեկնարկելու ոչինչ չկա։
Այդ պատճառով խափանումը հայտնվում է նոր սարքաշարում, ոչ թե ադմինիստրատորի նոութբուքում։ Նոութբուքը նախապատրաստվել էր ամիսներ առաջ մի մարդու կողմից, որը դա արած լինելը վաղուց մոռացել է։ Մեկնարկի հրամանը պատկերացրե՛ք որպես դռան զանգ, որն ինչ-որ մեկը լարերով միացրել է անցյալ եռամսյակում։ Սեղմելը նույնը չէ, ինչ լարերը անցկացնելը։
VPN կոնֆիգուրացիայի երեք սեփականատեր
Կազմակերպության կողմից կառավարվող պրոֆիլը գալիս է սարքերի կառավարումից։ Պրոֆիլը կրում է սերվերի հասցեները, նույնականացման կարգը և կազմակերպության պահանջած քաղաքականությունը, և VPN ադմինիստրատորը այն մարդն է, որը դրանք տրամադրում է։ Սկրիպտը չպետք է վերականգնի այդ կարգավորումները ցանկում գտած ցուցադրման անունից։
Բնիկ անձնական VPN կոնֆիգուրացիան ստեղծվում է Apple-ի Network Extension API-ով, որը ծածկում է ներկառուցված IPsec և IKEv2 արձանագրությունները։ Դա հավելվածի ինտերֆեյս է՝ պահման քայլով և օգտվողի հաստատմամբ, ոչ թե shell հրաման, որ լուռ ստեղծում է ցանկացած թունելի տեսակ, որ մատակարարը տրամադրում է։
Երրորդ կողմի հաճախորդը երրորդ դեպքն է՝ իր ներմուծման ձևաչափով, իր կառավարման գործիքով և հաճախ իր արտոնյալ օգնականով։ Նրա սեսիան պատկանում է այդ մատակարարի գործընթացին։ Նման անունով համակարգային ծառայություն գտնելը ապացույց չէ, որ համակարգային հրամանը կառավարում է թունելը, և այդ ենթադրությունը ստեղծում է սկրիպտներ, որոնք աշխատող են թվում, քանի դեռ մատակարարը թարմացնում է հաճախորդը։
Բնիկ նախապատրաստումն ունի պահում և հաստատում
Apple-ի մոդելը բեռնել, փոփոխել, պահելն է։ Հավելվածը բեռնում է գոյություն ունեցող նախապատվությունները գործարկումից հետո իր առաջին պահումից առաջ, փոփոխում է կոնֆիգուրացիան և ապա պահում այն։ Պահումը սխալ է հաղորդում, երբ չի կարողանում պահպանել, և այդ արդյունքն անտեսելը նախապատրաստման խափանումը երեք քայլ հետո դարձնում է միացման խափանում։
Առաջին պահումը նաև պահանջում է, որ օգտվողը հաստատի հավելվածը։ Դա դիտավորյալ անվտանգային սահման է, և նշանակում է, որ նոր Mac-ում առաջին գործարկումը ինտերակտիվ է, նույնիսկ երբ յուրաքանչյուր հետագա միացում և անջատում կարող է ավտոմատացվել։ Առաջին գործարկումը պլանավորե՛ք որպես մարդկային խնդիր՝ ներկա մարդով։ Ավտոմատացրե՛ք երկրորդ գործարկումից սկսած և գրե՛ք դա runbook-ում, որպեսզի ոչ ոք անհնարը չխոստանա։ Տեղադրման պլանը, որը խոստանում է ամբողջովին առանց հսկողության առաջին գործարկում, խոստանում է մի բան, որ հարթակը չի առաջարկում։
Apple-ը նաև խորհուրդ է տալիս API-ին ապավինելուց առաջ ստուգել սերվերի համատեղելիությունը կոնֆիգուրացիայի պրոֆիլով։ Այդ ստուգումը նախ անելը բաժանում է «սերվերը չի ընդունի այս հաճախորդին» և «հաճախորդը երբեք չի պահել կարգավորումները», որոնք տարբեր թիմերի համար տարբեր տոմսեր են։
Ինչ կարող է ենթադրել կրկնվող մեկնարկի հրամանը
Նախապատրաստումից հետո սկրիպտը կարող է ապահով ուղղվել գոյություն ունեցող միացմանը իր սեփականատիրոջ ինտերֆեյսով։ Տվե՛ք նրան միացման կայուն ինքնությունը և ձեր ուզած գործողությունը, և ուրիշ ոչինչ։ Այն չպետք է կարդա գուշակված նախապատվությունների ուղի և չպետք է ենթադրի, որ ընտրացանկում ցուցադրված անունը եզակի է ամբողջ համակարգում։
Բնիկ միացումների համար scutil --nc start-ի նման անվանված սեսիայի հարցումը կառավարման գործողություն է։ Այն չի տեղադրում սերվերի կարգավորումներ, չի ներմուծում վկայագրեր և չի կատարում առաջին պահման լիազորում։ Վերաբերվե՛ք նրան որպես շղթայի վերջին քայլի, երբեք որպես ամբողջ շղթայի։
Գաղտնիքները պահե՛ք հրամանի տողի արգումենտներից և սովորական ախտորոշիչ ելքից դուրս։ Ինչ ինքնության մեխանիզմ էլ ընտրել է տեղադրումը, հենց դրա վրա պետք է ապավինի մեկնարկի հրամանը, և shell-ի պատմության մեջ փակցված գաղտնաբառը բացահայտում է ցանկացած վերանայման մեջ։
Ընդունման երկու ստուգում
Առաջին ստուգումը նախապատրաստումն է՝ վերցրե՛ք նոր տեղադրված Mac և ապացուցե՛ք, որ կոնֆիգուրացիան առկա է, պատկանում է ճիշտ կառավարչին և ամբողջովին հաստատված է։ Արե՛ք դա միացումը ստուգելուց առաջ, որովհետև չնախապատրաստված մեքենայի վրա միացման թեստը ոչինչ չի ապացուցում սկրիպտի մասին։
Երկրորդ ստուգումը սեսիան է՝ միացե՛ք, հասե՛ք լիազորված ռեսուրսին և մաքուր անջատվե՛ք։ Այժմ յուրաքանչյուր խափանում ունի սեփականատեր, և դա է երկու աշխատանքն առանձնացնելու գործնական օգուտը։ Բացակայող պրոֆիլը մատակարարման խնդիր է, պահման սխալը՝ հաստատման խնդիր, մերժված մուտքը՝ նույնականացման խնդիր, և հաջող մեկնարկից հետո ժամկետի ավարտը՝ սեսիայի շերտ։ Դրանցից ոչ մեկը «սկրիպտը կոտրված է» չէ։