Die VPN-kliënt het bevoorregte hulp nodig om netwerkherkonfigurasie te doen, en daardie feit word te wyd op alles daaromheen toegepas. ’n Script wat ’n lêerdeel koppel het nie root nodig nie, want die deel behoort aan die sessie van die aangemelde gebruiker en aan daardie gebruiker se geloofsbriewe. Om die koppeling uit die bevoorregte pad te skuif verwyder die behoefte aan sudo-reëls, root-hake en wysigings aan meegelewerde toepassings. Wat oorbly is ’n klein applet wat oop bly, een profiel dophou en een poging maak.

Waarom dit in die gebruikersessie hoort

’n Gekoppelde volume is ’n eienskap van die sessie wat dit gekoppel het. ’n Ander gebruiker se sessie sien dit nie, en ’n koppeling wat deur root besit word, gedra hom anders as die een wat Finder gemaak het. Om die koppeling in die gebruikersessie te hou, bewaar daardie semantiek.

Bevoorregte helpers bestaan vir die dele wat dit werklik nodig het: ’n tonnelkoppelvlak skep, roetes verander, die resolver bywerk. Om ’n SMB-deel te koppel is nie een van daardie dele nie. Om dit te behandel asof dit een is, dwing ’n keuse tussen sudo sonder wagwoord en ’n root-script wat hardloop terwyl niemand teenwoordig is nie. Albei is groter risiko’s as wat die probleem regverdig, en die gebruikersessie-benadering vermy die keuse heeltemal.

Tunnelblick se eie verbindingshake is nie hier ’n plaasvervanger nie, want hulle hardloop buite die lessenaarsessie en hulle ordening teenoor die kliënt se scripte is nie gedefinieer nie. Om die toestand vanuit ’n gebruiker-applet te poll is ’n kleiner meganisme met minder aannames.

Bewys eers met die hand dat die deel werk

Outomatisering kan nie ’n roete, ’n toestemming of ’n rekening verskaf wat nie bestaan nie. Verbind die VPN met die hand en maak die deel in Finder oop voordat jy enige script skryf. As dit misluk, sal die script op ’n verwarrender manier misluk.

Teken die drie waardes aan wat die script gaan gebruik: die profielnaam presies soos Tunnelblick dit lys, die deel-URL en die volumenaam wat Finder ná die koppeling wys. Die volumenaam is belangrik omdat die kontrole vir ’n bestaande koppeling dit gebruik, en ’n kontrole op net die naam is ’n geriefswag, nie ’n bewys van die bediener se identiteit nie. Gebruik ’n naam wat uniek op die masjien is. Bevestig dan dat die bediener hoegenaamd antwoord.

smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs

Die eerste opdrag bewys dat die bediener antwoord, die tweede bewys dat die profielnaam oplos, en die derde wys hoe ’n suksesvolle koppeling lyk. Neem al drie waar voordat jy enigiets outomatiseer.

Lees die profieltoestand uit Tunnelblick

Tunnelblick stel sy konfigurasies en hulle toestande via AppleScript beskikbaar, en dit is die enigste haak wat hierdie ontwerp nodig het. Die toestand wat saak maak is die string wat vir daardie een profiel gerapporteer word, nie die teenwoordigheid van die toepassing nie.

Polling het gevolge wat dit werd is om te noem. ’n Herverbinding korter as die interval kan ongemerk verbygaan, en die applet sien die oorgang glad nie. Dit is aanvaarbaar vir ’n koppelwag en onaanvaarbaar vir enigiets wat op elke gebeurtenis moet reageer. As jy gebeurtenisgetrouheid nodig het, is dit die verkeerde meganisme eerder as ’n meganisme wat ’n korter tydhouer nodig het. Kies die interval met daardie afweging in gedagte.

property attempted : false

on idle
    set profileName to "Office"
    set shareURL to "smb://files.corp.example/OfficeTeam"
    set volName to "OfficeTeam"
    tell application "Tunnelblick" to set vpnState to state of first configuration whose name is profileName
    if vpnState is not "CONNECTED" then
        set attempted to false
        return 20
    end if
    tell application "Finder" to set mounted to (exists disk volName)
    if (not mounted) and (not attempted) then
        set attempted to true
        try
            mount volume shareURL
        end try
    end if
    return 20
end idle

Voer dit uit as ’n toepassing met die opsie om oop te bly, en begin dit dan in die aangemelde sessie eerder as deur sudo.

Koppel een keer en stop dan met probeer

Die gepoog-vlag is wat keer dat dit ’n lus word wat geloofsbriewe raai. Sodra die applet gepoog het, wag dit tot die verbindingstoestand verander voordat dit weer probeer.

Daardie gedrag is opsetlik. ’n Deel wat die koppeling weier, weier dit gewoonlik om ’n rede wat ’n herpoging nie kan regstel nie, en herhaalde pogings maak van een versoek ’n stroom daarvan. Die vlag word herstel wanneer die profiel die verbinde toestand verlaat, so ’n egte herverbinding lewer presies een nuwe poging. Om die applet te sluit en weer te begin herstel dit ook, en dit is die handmatige oorheersing. Nie een pad verberg ’n mislukking nie; albei laat dit in Finder sigbaar.

Die script dra geen wagwoord nie, en dit behoort so te bly. Laat die koppelbewerking om invoer vra, en laat die sleutelhouer doen wat die organisasie ondersteun. Om ’n geloofsbrief in ’n URL in te sluit maak van ’n geriefs-script ’n geheim wat geroteer moet word.

Wat die helper nie kan doen nie

Drie beperkings is die moeite werd om langs die applet te skryf. Dit kan nie ’n besige volume na ’n netwerkfout uitwerp nie, dit kan nie waarborg dat DNS en die bediener gereed is wanneer die toestand sê verbind nie, en dit reageer nie op elke herverbinding nie.

Die eerste beperking maak in die praktyk die meeste saak. ’n Deel wie se bediener verdwyn, laat ’n volume wat gelyk het of dit gekoppel is en wat by toegang blokkeer, en die beleefde oplossing is om lêerbewerkings af te handel en uit te werp voor ’n beplande ontkoppeling. Die tweede verduidelik die meeste mislukte eerste pogings: die tonnel is op terwyl die resolver nog nie ingehaal het nie, so wag en koppel dan een keer met die hand om te bevestig. Die derde is die polling-afweging van vroeër eerder as ’n fout om reg te maak.

Vir ’n onbeheerde masjien of ’n bestuurde vloot is hierdie ontwerp die verkeerde vorm. Gebruik ’n koppelbeleid wat deur die administrateur besit word in plaas daarvan om ’n lessenaar-applet tot ’n bevoorregte diens uit te brei.

Verwante artikels