Mae’r cleient VPN angen cymorth braint i ailffurfweddu’r rhwydwaith, ac mae’r ffaith honno’n cael ei chymhwyso’n rhy eang at bopeth o’i gwmpas. Nid oes angen root ar sgript sy’n mowntio rhaniad ffeiliau, oherwydd mae’r rhaniad yn perthyn i sesiwn y defnyddiwr sydd wedi mewngofnodi ac i gyfrifnodau’r defnyddiwr hwnnw. Mae symud y mownt allan o’r llwybr braint yn dileu’r angen am reolau sudo, bachynnau root a golygu apiau wedi’u bwndelu. Yr hyn sy’n weddill yw applet bach sy’n aros ar agor, yn gwylio un proffil ac yn gwneud un ymgais.

Pam mae hyn yn perthyn i sesiwn y defnyddiwr

Mae cyfrol a fowntiwyd yn briodwedd y sesiwn a’i mowntiodd. Nid yw sesiwn defnyddiwr arall yn ei gweld, ac mae mownt sy’n eiddo i root yn ymddwyn yn wahanol i’r un a grëwyd gan Finder. Mae cadw’r mownt yn sesiwn y defnyddiwr yn cadw’r semanteg honno.

Mae cynorthwywyr braint yn bodoli ar gyfer y rhannau sydd eu hangen go iawn: creu rhyngwyneb tiwnel, newid llwybrau, diweddaru’r datryswr. Nid yw mowntio rhaniad SMB yn un o’r rhannau hynny. Mae ei drin fel pe bai’n un yn gorfodi dewis rhwng sudo heb gyfrinair a sgript root sy’n rhedeg pan nad oes neb yn bresennol. Mae’r ddau yn risgiau mwy nag y mae’r broblem yn ei chyfiawnhau, ac mae’r ymagwedd sesiwn defnyddiwr yn osgoi’r dewis yn gyfan gwbl.

Nid yw bachynnau cysylltu Tunnelblick ei hun yn ddirprwy yma, gan eu bod yn rhedeg y tu allan i sesiwn y bwrdd gwaith ac nad yw eu trefn o ran sgriptiau’r cleient wedi’i diffinio. Mae arolygu’r cyflwr o applet defnyddiwr yn fecanwaith llai gyda llai o ragdybiaethau.

Profwch yn gyntaf â llaw bod y rhaniad yn gweithio

Ni all awtomeiddio ddarparu llwybr, caniatâd na chyfrif nad yw’n bodoli. Cysylltwch y VPN â llaw ac agorwch y rhaniad yn Finder cyn ysgrifennu unrhyw sgript. Os bydd hynny’n methu, bydd y sgript yn methu mewn ffordd fwy dryslyd.

Cofnodwch y tri gwerth y bydd y sgript yn eu defnyddio: enw’r proffil yn union fel y mae Tunnelblick yn ei restru, URL y rhaniad ac enw’r gyfrol y mae Finder yn ei ddangos ar ôl mowntio. Mae enw’r gyfrol yn bwysig oherwydd bod y gwiriad am fownt presennol yn ei ddefnyddio, ac mae gwiriad yn seiliedig ar yr enw yn unig yn warchodfa gyfleustra, nid yn brawf o hunaniaeth y gweinydd. Defnyddiwch enw sy’n unigryw ar y peiriant. Yna cadarnhewch fod y gweinydd yn ateb o gwbl.

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

Mae’r gorchymyn cyntaf yn profi bod y gweinydd yn ateb, yr ail yn profi bod enw’r proffil yn datrys, a’r trydydd yn dangos sut mae mownt llwyddiannus yn edrych. Cofnodwch y tri cyn awtomeiddio unrhyw beth.

Darllen cyflwr y proffil o Tunnelblick

Mae Tunnelblick yn datgelu ei ffurfweddiadau a’u cyflwr drwy AppleScript, a dyna’r unig fachyn sydd ei angen ar y dyluniad hwn. Y cyflwr sy’n bwysig yw’r llinyn a adroddir ar gyfer y proffil penodol hwnnw, nid presenoldeb y rhaglen.

Mae gan arolygu ganlyniadau sy’n werth eu nodi. Gall ailgysylltiad byrrach na’r cyfwng fynd heb sylwi, ac nid yw’r applet yn gweld y newid o gwbl. Mae hynny’n dderbyniol ar gyfer gwarchodfa fownt ac yn annerbyniol ar gyfer unrhyw beth sy’n rhaid iddo ymateb i bob digwyddiad. Os oes angen ffyddlondeb digwyddiadau arnoch, hwn yw’r mecanwaith anghywir yn hytrach na mecanwaith sydd angen amserydd byrrach. Dewiswch y cyfwng gyda’r cyfaddawd hwnnw mewn golwg.

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

Allforiwch ef fel rhaglen gyda’r opsiwn i aros ar agor, yna lansiwch ef yn y sesiwn sydd wedi mewngofnodi yn hytrach na thrwy sudo.

Mowntio unwaith, yna rhoi’r gorau i geisio

Y faner ceisio yw’r hyn sy’n cadw hyn rhag troi’n ddolen sy’n dyfalu cyfrifnodau. Unwaith y bydd yr applet wedi ceisio, mae’n aros i gyflwr y cysylltiad newid cyn ceisio eto.

Mae’r ymddygiad hwnnw’n fwriadol. Mae rhaniad sy’n gwrthod y mownt fel arfer yn ei wrthod am reswm na all ailymgais ei ddatrys, ac mae ymdrechion ailadroddus yn troi un anogwr yn llif ohonynt. Mae’r faner yn cael ei hailosod pan fydd y proffil yn gadael y cyflwr cysylltiedig, felly mae ailgysylltiad gwirioneddol yn cynhyrchu’n union un ymgais newydd. Mae gadael a ail-lansio’r applet hefyd yn ei ailosod, a dyna’r gorchymyn â llaw. Nid yw’r un o’r ddau lwybr yn cuddio methiant; mae’r ddau yn ei adael yn weladwy yn Finder.

Nid oes cyfrinair yn y sgript, ac fe ddylai aros felly. Gadewch i’r llawdriniaeth fownt ofyn, a gadewch i’r cylch allweddi wneud yr hyn y mae’r sefydliad yn ei gefnogi. Mae ymgorffori cyfrifnod mewn URL yn troi sgript gyfleustra yn gyfrinach y mae’n rhaid ei chylchdroi.

Yr hyn na all y cynorthwyydd ei wneud

Mae tri chyfyngiad yn werth eu hysgrifennu wrth ymyl yr applet. Ni all daflu cyfrol brysur allan ar ôl methiant rhwydwaith, ni all warantu bod DNS a’r gweinydd yn barod pan fydd y cyflwr yn dweud cysylltiedig, ac nid yw’n ymateb i bob ailgysylltiad.

Mae’r cyfyngiad cyntaf yn bwysicaf yn ymarferol. Mae rhaniad y mae ei weinydd yn diflannu yn gadael cyfrol sy’n edrych wedi’i mowntio ac yn rhwystro ar fynediad, a’r cywiriad bonheddig yw gorffen gweithrediadau ffeil a’i thaflu allan cyn datgysylltiad wedi’i gynllunio. Mae’r ail yn esbonio’r rhan fwyaf o’r ymgeisiau cyntaf aflwyddiannus: mae’r tiwnel i fyny tra nad yw’r datryswr wedi dal i fyny, felly arhoswch ac yna mowntiwch â llaw unwaith i gadarnhau. Mae’r trydydd yn gyfaddawd arolygu o’r blaen yn hytrach na nam i’w drwsio.

Ar gyfer peiriant heb neb yn gofalu amdano neu fflyd a reolir, mae’r dyluniad hwn yn siâp anghywir. Defnyddiwch bolisi mowntio sy’n eiddo i’r gweinyddwr yn lle ymestyn applet bwrdd gwaith yn wasanaeth braint.

Erthyglau cysylltiedig