root کے طور پر چلائے بغیر Tunnelblick سے شیئر ماؤنٹ کرنا
کھلا رہنے والا AppleScript ایک Tunnelblick پروفائل کی نگرانی کر کے SMB شیئر کو لاگ اِن شدہ صارف کے طور پر ماؤنٹ کر سکتا ہے، بغیر root ہک اور بغیر پاس ورڈ کے sudo کے۔
VPN کلائنٹ کو نیٹ ورک دوبارہ ترتیب دینے کے لیے مراعات یافتہ مدد درکار ہوتی ہے، اور یہ حقیقت اس کے گرد ہر چیز پر حد سے زیادہ لاگو کر دی جاتی ہے۔ فائل شیئر ماؤنٹ کرنے والی اسکرپٹ کو root کی ضرورت نہیں ہوتی، کیونکہ شیئر لاگ اِن شدہ صارف کے سیشن اور اسی صارف کی اسناد کا حصہ ہے۔ ماؤنٹ کو مراعات یافتہ راستے سے باہر نکالنے سے sudo قواعد، root ہکس اور ساتھ آنے والی ایپس میں تبدیلی کی ضرورت ختم ہو جاتی ہے۔ باقی ایک چھوٹا ایپلٹ رہتا ہے جو کھلا رہتا ہے، ایک پروفائل کی نگرانی کرتا ہے اور صرف ایک کوشش کرتا ہے۔
یہ صارف سیشن میں کیوں آتا ہے
ماؤنٹ شدہ والیوم اُس سیشن کی خصوصیت ہے جس نے اسے ماؤنٹ کیا۔ کسی دوسرے صارف کا سیشن اسے نہیں دیکھتا، اور root کی ملکیت والا ماؤنٹ Finder کے بنائے ہوئے سے مختلف برتاؤ کرتا ہے۔ ماؤنٹ کو صارف سیشن میں رکھنا وہی معنی برقرار رکھتا ہے۔
مراعات یافتہ مددگار اُن حصوں کے لیے ہوتے ہیں جنہیں واقعی اُن کی ضرورت ہوتی ہے: ٹنل انٹرفیس بنانا، راستے بدلنا، حل کنندہ کو تازہ کرنا۔ SMB شیئر ماؤنٹ کرنا اُن حصوں میں نہیں آتا۔ اسے ویسا سمجھ کر برتاؤ کرنے سے بغیر پاس ورڈ کے sudo اور ایسی root اسکرپٹ کے درمیان چننا پڑتا ہے جو اُس وقت چلتی ہے جب کوئی موجود نہ ہو۔ دونوں مسئلے کے جواز سے بڑے خطرے ہیں، اور صارف سیشن کا طریقہ اس انتخاب سے مکمل طور پر بچتا ہے۔
Tunnelblick کے اپنے کنکشن ہک یہاں متبادل نہیں ہیں، کیونکہ وہ ڈیسک ٹاپ سیشن سے باہر چلتے ہیں اور کلائنٹ کی اسکرپٹس کے مقابلے میں اُن کی ترتیب متعین نہیں۔ صارف ایپلٹ سے حالت پوچھنا کم مفروضوں والا چھوٹا طریقہ ہے۔
پہلے ہاتھ سے ثابت کریں کہ شیئر کام کرتا ہے
خودکاری ایسا راستہ، اجازت یا اکاؤنٹ نہیں دے سکتی جو موجود نہ ہو۔ کوئی بھی اسکرپٹ لکھنے سے پہلے 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 کے ذریعے ظاہر کرتا ہے، اور یہی واحد ہک ہے جس کی اس ڈیزائن کو ضرورت ہے۔ اہم حالت وہی ہے جو اُس ایک پروفائل کے لیے رپورٹ ہوتی ہے، ایپ کی موجودگی نہیں۔
پوچھنے کی کچھ قیمتیں ہیں جن کا ذکر مناسب ہے۔ وقفے سے چھوٹا دوبارہ رابطہ نظر انداز ہو سکتا ہے، اور ایپلٹ اُس تبدیلی کو بالکل نہیں دیکھتا۔ ماؤنٹ کی نگہبانی کے لیے یہ قابل قبول ہے اور ہر واقعے پر ردِعمل دینے والی کسی بھی چیز کے لیے ناقابلِ قبول۔ اگر واقعہ کی سطح پر درستگی چاہیے تو یہ غلط طریقہ ہے، ایسا طریقہ نہیں جس کا ٹائمر چھوٹا کرنا ہو۔ وقفہ منتخب کرتے وقت اس سمجھوتے کو ذہن میں رکھیں۔
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 کے بجائے لاگ اِن شدہ سیشن میں چلائیں۔
ایک بار ماؤنٹ کریں، پھر کوشش بند کر دیں
کوشش کیا گیا پرچم ہی اسے اسناد کا اندازہ لگانے والے حلقے بننے سے روکتا ہے۔ ایپلٹ کے کوشش کرنے کے بعد وہ دوبارہ کوشش کرنے سے پہلے کنکشن کی حالت بدلنے کا انتظار کرتا ہے۔
یہ رویہ جان بوجھ کر ہے۔ ماؤنٹ سے انکار کرنے والا شیئر عام طور پر ایسی وجہ سے انکار کرتا ہے جو دوبارہ کوشش سے درست نہیں ہوتی، اور بار بار کوششیں ایک درخواست کو اُن کی قطار بنا دیتی ہیں۔ پرچم اُس وقت از سرِ نو مقرر ہوتا ہے جب پروفائل جڑی حالت سے نکلے، اس لیے حقیقی دوبارہ رابطہ بالکل ایک نئی کوشش پیدا کرتا ہے۔ ایپلٹ سے باہر نکلنا اور دوبارہ چلانا بھی اسے از سرِ نو مقرر کرتا ہے، اور یہی ہاتھ کا مداخلت ہے۔ کوئی بھی راستہ ناکامی نہیں چھپاتا؛ دونوں اُسے Finder میں نظر آنے والا چھوڑ دیتے ہیں۔
اسکرپٹ کوئی پاس ورڈ نہیں رکھتی، اور ایسا ہی رہنا چاہیے۔ ماؤنٹ کی کارروائی کو پوچھنے دیں، اور کی چین کو وہ کرنے دیں جو ادارہ معاونت کرتا ہے۔ URL میں اسناد ڈالنا سہولت والی اسکرپٹ کو ایسا راز بنا دیتا ہے جسے بدلنا پڑتا ہے۔
مددگار کیا نہیں کر سکتا
تین حدود ایپلٹ کے پاس لکھنے کے لائق ہیں۔ یہ نیٹ ورک کی ناکامی کے بعد مصروف والیوم باہر نہیں نکال سکتا، یہ یقینی نہیں بنا سکتا کہ حالت کے جڑا ہوا بتانے پر DNS اور سرور تیار ہوں، اور ہر دوبارہ رابطے پر ردِعمل نہیں دیتا۔
پہلی حد عملاً سب سے اہم ہے۔ جس شیئر کا سرور غائب ہو جائے وہ ایسا والیوم چھوڑ جاتا ہے جو ماؤنٹ دکھتا ہے اور رسائی پر رُک جاتا ہے، اور شائستہ حل یہ ہے کہ منصوبہ بند منقطع سے پہلے فائل کی کارروائیاں مکمل کر کے اُسے باہر نکال دیں۔ دوسری حد پہلی کوششوں کی بیشتر ناکامیوں کی وضاحت کرتی ہے: ٹنل اوپر ہے جبکہ حل کنندہ ابھی نہیں پہنچا، اس لیے انتظار کریں اور پھر تصدیق کے لیے ایک بار ہاتھ سے ماؤنٹ کریں۔ تیسری حد پہلے بتایا گیا پوچھنے کا سمجھوتہ ہے، درست کرنے کے لائق کوئی خرابی نہیں۔
بغیر نگرانی والی مشین یا زیرِ انتظام بیڑے کے لیے یہ ڈیزائن غلط شکل کا ہے۔ ڈیسک ٹاپ ایپلٹ کو مراعات یافتہ سروس تک بڑھانے کے بجائے منتظم کی ملکیت والی ماؤنٹ پالیسی استعمال کریں۔