Tunnelblick-тен тармактык бөлүштүрүүнү root катарында иштебей туташтыруу
Ачык турган AppleScript бир Tunnelblick профилин көзөмөлдөп, SMB бөлүштүрүүнү кирген колдонуучу катарында туташтыра алат, root илгичи жана сырсөзсүз sudo жок.
VPN кардары тармакты кайра конфигурациялоо үчүн артыкчылыктуу жардамга муктаж, жана бул факт айлана-чөйрөдөгүнүн баарына өтө кеңири колдонулат. Файлдык бөлүштүрүүнү туташтырган скриптке root керек эмес, анткени бөлүштүрүү кирген колдонуучунун сессиясына жана анын аккаунт маалыматтарына таандык. Туташтырууну артыкчылыктуу жолдон чыгаруу sudo эрежелерине, root илгичтерине жана курама программаларды өзгөртүүгө болгон муктаждыкты жок кылат. Калганы — ачык турган, бир профилди көзөмөлдөгөн жана бир аракет жасаган кичинекей applet.
Бул эмне үчүн колдонуучунун сессиясына таандык
Туташтырылган том — аны туташтырган сессиянын касиети. Башка колдонуучунун сессиясы аны көрбөйт, ал эми root карамагындагы туташтыруу Finder жараткандан башкача жүрүм көрсөтөт. Туташтырууну колдонуучунун сессиясында кармоо ушул семантиканы сактайт.
Артыкчылыктуу жардамчылар чындап муктаж болгон бөлүктөр үчүн бар: туннелдик интерфейс түзүү, маршруттарды өзгөртүү, чечүүчүнү жаңыртуу. SMB бөлүштүрүүсүн туташтыруу ошол бөлүктөрдүн бири эмес. Ага ошондой мамиле кылуу сырсөзсүз sudo менен эч ким жок кезде иштеген root скриптинин ортосунда тандоого мажбурлайт. Экөө тең маселени актай тургандан чоңураак тобокелдик, ал эми колдонуучунун сессиясы аркылуу мамиле бул тандоодон толук качаат.
Tunnelblick-тин өз туташуу илгичтери бул жерде алмаштыруучу эмес, анткени алар иш тактасынын сессиясынан тышкары аткарылат жана алардын кардар скрипттерине карата тартиби аныкталган эмес. Абалды колдонуучунун appletинен суроо — азыраак божомол менен иштеген кичинекей механизм.
Алгач бөлүштүрүүнүн иштешин кол менен далилдеңиз
Автоматташтыруу жок маршрутту, уруксатты же аккаунтту бере албайт. Кандайдыр бир скрипт жазганга чейин VPNга кол менен туташып, бөлүштүрүүнү Finderде ачыңыз. Эгер бул ийгиликсиз болсо, скрипт андан да түшүнүксүз түрдө ийгиликсиз болот.
Скрипт колдоно турган үч маанини жазып алыңыз: профилдин атын Tunnelblick тизмелегендей так, бөлүштүрүүнүн URLин жана туташтыруудан кийин Finder көрсөткөн томдун атын. Томдун аты маанилүү, анткени бар туташтырууну текшерүү аны колдонот, ал эми пайда болгон аталышка негизделген текшерүү — ыңгайлуулук коргоосу, сервердин инсандыгынын далили эмес. Машинада кайталанбаган ат колдонуңуз. Анан сервердин жалпы жооп берүүсүн ырастаңыз.
smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs
Биринчи буйрук сервердин жооп берерин, экинчиси профилдин атынын чечилерин далилдейт, ал эми үчүнчүсү ийгиликтүү туташтыруунун кандай көрүнөрүн көрсөтөт. Бир нерсени автоматташтырганга чейин үчөөнү тең жазып алыңыз.
Профилдин абалын Tunnelblick-тен окуңуз
Tunnelblick өзүнүн конфигурацияларын жана алардын абалдарын AppleScript аркылуу сунуштайт, жана бул долбоорго керек болгон жалгыз илгич. Маанилүү абал — так ошол профил үчүн билдирилген сап, программанын бар экени эмес.
Суроонун айтууга татырлык кесепеттери бар. Интервалдан кыска кайра туташуу байкалбай өтүшү мүмкүн, ал эми applet өтүүнү такыр көрбөйт. Бул туташтырууну коргоо үчүн кабыл алынат жана ар бир окуяга жооп бериши керек болгон нерсе үчүн кабыл алынбайт. Эгер окуялардын тактыгы керек болсо, бул туура эмес механизм, кыскараак таймер керек механизм эмес. Интервалды ушул компромиссти эске алып тандаңыз.
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
Аны ачык калуу мүмкүнчүлүгү менен программа катары экспорттоп, анан sudo аркылуу эмес, кирген сессияда иштетиңиз.
Бир жолу туташтырыңыз, анан аракеттен баш тартыңыз
Аракет жасалды желеги бул аккаунт маалыматтарын божомолдогон циклге айланышына жол бербейт. applet аракет жасагандан кийин кайталаштан мурун туташуу абалынын өзгөрүшүн күтөт.
Бул жүрүм-турум атайын. Туташтыруудан баш тарткан бөлүштүрүү адатта жаңы аракет оңдой албаган себептен баш тартат, ал эми кайталанган аракеттер бир суроону алардын агымына айландырат. Желек профил туташкан абалдан чыкканда кайра коюлат, ошондуктан чыныгы кайра туташуу так бир жаңы аракет берет. appletтен чыгып, кайра иштетүү да аны кайра коёт, жана бул кол менен айланып өтүү. Эки жолдун бири да ийгиликсиздикти жашырбайт; экөө тең аны Finderде көрүнүктүү калтырат.
Скрипт эч кандай сырсөздү алып жүрбөйт, жана ошондой бойдон калышы керек. Туташтыруу операциясына суроого уруксат бериңиз, ал эми ачкыч боого уюм колдогонду жасоого мүмкүнчүлүк бериңиз. Аккаунт маалыматын URLге киргизүү ыңгайлуулук скриптин айландыруу керек болгон сырга айландырат.
Жардамчы эмнени жасай албайт
Үч чектөө appletтин жанына жазууга татырлык. Ал тармактын бузулушунан кийин бош эмес томду чыгара албайт, абал туташкан дегенде DNS менен сервердин даяр экенине кепилдик бере албайт жана ар бир кайра туташууга жооп бербейт.
Биринчи чектөө практикада эң маанилүү. Сервери жоголгон бөлүштүрүү туташкандай көрүнгөн жана кирүүдө тоскон томду калтырат, ал эми сылык оңдоо — файлдык операцияларды бүтүрүп, пландалган ажыратуудан мурун аны чыгаруу. Экинчиси ийгиликсиз биринчи аракеттердин көбүн түшүндүрөт: туннель турган, ал эми чечүүчү али жеткен жок, ошондуктан күтүп, ырастоо үчүн бир жолу кол менен туташтырыңыз. Үчүнчүсү — мурун айтылган суроо компромисси, оңдоону талап кылган ката эмес.
Көзөмөлсүз машина же башкарылуучу парк үчүн бул дизайн туура эмес формада. Иш тактасынын appletin артыкчылыктуу кызматка кеңейтүүнүн ордуна администраторго таандык туташтыруу саясатын колдонуңуз.