Вашата скрипта го стартува VPN, но не го подготвува
Командата за стартување бара врска што веќе постои и е одобрена. Одвојте ја подготовката од контролата на сесијата, инаку скриптата работи само на вашиот Mac.
Пишувате скрипта што извршува scutil --nc start со името на врската, работи на вашиот Mac и не успева на секој новоинсталиран компјутер во канцеларијата. Скриптата не е расипана. Од неа се бара нешто што никогаш не можела: стартувањето постоечка врска не е истата операција како создавање нова.
Подготовката и контролата на сесијата се две работи со два сопственици, а работниот тек што претпоставува спротивно ќе го помине секој тест на компјутерот каде што е напишан.
Со што всушност разговара командата за стартување
Командата за контрола на сесијата се обраќа на конфигурација што веќе постои и веќе е одобрена. Таа бара од системот да ја подигне таа именувана врска, користејќи ги претходно зачуваните поставки на серверот, референците за идентитет и политиката. Ако тие никогаш не биле инсталирани, нема што да се стартува.
Затоа дефектот се појавува на нов хардвер, а не на преносниот компјутер на администраторот. Преносниот компјутер бил подготвен пред месеци од личност што оттогаш го заборавила тоа. Замислете ја командата за стартување како ѕвонче на врата што некој го поврзал со жици минатиот квартал. Притискањето не е исто како поставувањето на жиците.
Три сопственици на VPN конфигурација
Профилот што го управува организацијата доаѓа од управувањето со уреди. Профилот ги носи адресите на серверот, уредувањето на автентикацијата и политиката што ја бара организацијата, а VPN администраторот е личноста што ги обезбедува. Скриптата не треба да ги реконструира тие поставки од прикажано име што го нашла во список.
Изворната лична VPN конфигурација се создава преку Network Extension API на Apple, што ги покрива вградените протоколи IPsec и IKEv2. Тоа е интерфејс на апликација со чекор на зачувување и одобрување од корисникот, а не shell команда што тивко создава каков било тип тунел што го доставува добавувач.
Клиентот од трета страна е трет случај со свој формат за увоз, своја алатка за управување и често свој привилегиран помошник. Неговата сесија ја поседува процесот на тој добавувач. Наоѓањето системска услуга со слично име не е доказ дека системска команда го контролира тунелот, а таквата претпоставка создава скрипти што изгледаат како да работат додека добавувачот не го ажурира клиентот.
Изворната подготовка има зачувување и одобрување
Моделот на Apple е вчитај, измени, зачувај. Апликацијата ги вчитува постоечките поставки пред своето прво зачувување по стартувањето, ја менува конфигурацијата и потоа ја зачувува. Зачувувањето пријавува грешка кога не може да опстане, а игнорирањето на тој резултат ја претвора грешката во подготовката во грешка во врската три чекори подоцна.
Првото зачувување бара и корисникот да ја одобри апликацијата. Тоа е намерна безбедносна граница и значи дека првото извршување на нов Mac е интерактивно, дури и кога секое следно поврзување и исклучување може да се автоматизира. Планирајте го првото извршување како човечка задача со присутен човек. Автоматизирајте го второто извршување и понатаму, и напишете го тоа во runbook-от за никој да не ветува невозможно. Планот за распоредување што ветува целосно ненадгледувано прво извршување ветува нешто што платформата не го нуди.
Apple исто така препорачува да се провери компатибилноста на серверот со конфигурациски профил пред да се потпрете на API-то. Правењето на таа проверка прво го одделува «серверот нема да го прифати овој клиент» од «клиентот никогаш не ги зачувал поставките», што се различни билети за различни тимови.
Што смее да претпостави повторлива команда за стартување
По подготовката, скриптата може безбедно да ја насочи постоечката врска преку интерфејсот на нејзиниот сопственик. Дајте ѝ го стабилниот идентитет на врската плус дејството што го сакате, и ништо друго. Не треба да чита погодена патека на поставки и не треба да претпоставува дека името во менито е единствено во целиот систем.
За изворни врски, именувано барање за сесија како scutil --nc start е контролна операција. Тоа не инсталира поставки на серверот, не увезува акредитиви и не врши авторизација на првото зачувување. Третирајте го како последен чекор од синџир, никогаш како целиот синџир.
Држете ги тајните надвор од аргументите на командната линија и надвор од вообичаениот дијагностички излез. Кој механизам за идентитет и да го избрало распоредувањето, на него треба да се потпре командата за стартување, а лозинката залепена во историјата на shell е наод во секој преглед.
Две проверки за прифаќање
Првата проверка е подготовката: земете новоинсталиран Mac и докажете дека конфигурацијата постои, дека е во сопственост на вистинскиот управувач и дека е целосно одобрена. Направете го тоа пред да ја тестирате поврзаноста, бидејќи тестот на врска на неподготвен компјутер не докажува ништо за скриптата.
Втората проверка е сесијата: поврзете се, стигнете до овластениот ресурс и чисто исклучете се. Секој дефект сега има сопственик, и тоа е практичната корист од разделувањето на двете работи. Профилот што недостига е проблем со испораката, грешката при зачувување е проблем со одобрувањето, одбиеното најавување е проблем со автентикацијата, а истекот на времето по успешно стартување е слојот на сесијата. Ниту еден од нив не е «скриптата е расипана».