টার্মিনাল থেকে নাম দেওয়া Tunnelblick প্রোফাইল নিয়ন্ত্রণ করুন
Tunnelblick AppleScript-এর মাধ্যমে connect, state ও disconnect দেয়। ওই ইন্টারফেস ডাকুন, নিয়ন্ত্রণ অ্যাপের হাতেই রাখুন, আর প্রতিটি অপেক্ষাকে সময়সীমা দিন।
ব্যাকআপের আগে VPN চালু থাকা দরকার এমন স্ক্রিপ্টগুলো প্রায়ই সরাসরি openvpn চালায়। এতে Tunnelblick যে প্রোফাইল, DNS ও রুট হ্যান্ডলিং আগেই সামলায় তা ছেড়ে দেওয়া হয়। সমর্থিত পথ হলো Tunnelblick-এর নিজের AppleScript ইন্টারফেস, যা নাম দেওয়া কনফিগারেশনের জন্য connect, state ও disconnect অনুরোধ গ্রহণ করে। সেটিই ব্যবহার করুন, আর অ্যাপকেই দায়িত্বে থাকতে দিন।
অ্যাপের সঙ্গে কথা বলুন, openvpn-এর সঙ্গে নয়
OpenVPN প্রোফাইল, ইঞ্জিন নির্বাচন, স্ক্রিপ্ট এবং DNS ও রুট ইন্টিগ্রেশন Tunnelblick-এর অধীনে। আলাদা openvpn বাইনারি ভিন্ন এক চালু করার বিন্যাস, একই সংযোগের শর্টকাট নয়।
অ্যাপের স্ক্রিপ্টিং ইন্টারফেস ডাকলে ওই মালিকানা অটুট থাকে এবং প্রতিটি অনুরোধ পর্যালোচনাযোগ্য হয়।
এখানকার উদাহরণ ধরে নেয় Tunnelblick Applications-এ আছে, কার্যকর কনফিগারেশনের নাম HQ, এবং কমান্ডগুলো লগ-ইন করা Mac ব্যবহারকারীর সেশনে চলে। নামটি আপনার কাছে থাকা সঠিক কনফিগারেশনের নামে বদলান।
ঠিক একটি নাম দেওয়া প্রোফাইল চালু করুন
connect অনুরোধ কনফিগারেশনের নাম বলে। এটি সর্বশেষে নির্বাচিত যা ছিল তার সঙ্গে সংযোগ করার অনুরোধ নয়।
যে ব্যবহারকারী সেশনটি কনফিগারেশনের মালিক, সেখানেই এটি চালান:
osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'স্বাভাবিক সাইন-ইন প্রম্পটগুলো পার হোন। macOS জিজ্ঞাসা করতে পারে কলকারী অ্যাপটিকে Tunnelblick নিয়ন্ত্রণের অনুমতি দেওয়া হবে কি না; অনুমোদনের আগে দেখে নিন কোন অ্যাপ আর কোন লক্ষ্য। ওই ডায়ালগ স্বয়ংক্রিয়ভাবে পেরিয়ে যাওয়া ডায়ালগের উদ্দেশ্যই নষ্ট করে।
টানেল ওঠার আগেই connect অনুরোধ ফিরে আসে
Tunnelblick-এর স্ক্রিপ্টিং গাইড স্পষ্ট: সংযোগ শেষ হওয়ার আগেই connect ফিরে আসে। শূন্য এক্সিট স্ট্যাটাস মানে অনুরোধ গ্রহণ করা হয়েছে, ট্রাফিক বইছে তা নয়।
স্টেট আলাদাভাবে পড়ুন:
osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'CONNECTED একটি সংযোগ-অবস্থার ফলাফল। এটি এখনো প্রমাণ করে না যে আপনার কাজের প্রয়োজনীয় ব্যক্তিগত রিসোর্সটি পৌঁছানোযোগ্য, তাই নির্ভরশীল কাজ শুরুর আগে সেটি আলাদাভাবে যাচাই করুন।
স্ক্রিপ্টিং ইন্টারফেসের অন্য নিয়ন্ত্রণগুলো বিস্তৃত কাজ সামলায় এবং কেবল একটি প্রোফাইল বদলালে দরকার হয় না।
সময়সীমা নিয়ে অপেক্ষা করুন, তারপর ব্যর্থ হোন
অনন্তকাল পোলিং করাই স্ক্রিপ্টকে সারারাত ঝুলিয়ে রাখে আর পরের রান আটকে দেয়। অপেক্ষাকে একটি সময়সীমা, ছোট বিরতি আর স্পষ্ট ব্যর্থতার ফল দিন। CONNECTED ছাড়া প্রতিটি অবস্থাকে প্রস্তুত নয় বলে ধরুন, অন্তর্বর্তী অবস্থাগুলোসহ। শেষ যে অবস্থা দেখেছেন তা লগ করুন, যাতে ব্যর্থতা নিজেই ব্যাখ্যা দেয়।
সীমাবদ্ধ লুপ দেখতে এমন:
for i in $(seq 1 30); do
state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
if [ "$state" = "CONNECTED" ]; then exit 0; fi
sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1ত্রিশ সেকেন্ড একটি উদাহরণ, সর্বজনীন টাইমআউট নয়। প্রোফাইল যে প্রমাণীকরণ পথ সত্যিই ব্যবহার করে তার ভিত্তিতে সময়সীমা বাছুন, আর সেটি ওয়ার্কফ্লোর রেকর্ডে রাখুন।
স্টেট যাচাই করুন এবং নাম ধরে সংযোগ বিচ্ছিন্ন করুন
একই প্রোফাইল থামাতে একই নাম দিয়ে disconnect ডাকুন। এতে অনুরোধ সংকীর্ণ থাকে এবং অন্য কনফিগারেশন অক্ষত থাকে।
osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'প্রোফাইলের নাম আর নিয়ন্ত্রকটি একসঙ্গে ওয়ার্কফ্লোর রেকর্ডে রাখুন, প্রত্যাশিত প্রমাণীকরণ ও সমাপ্তি যাচাইয়ের সঙ্গে। ওই রেকর্ডই ছয় মাস পর কমান্ডটিকে পর্যালোচনাযোগ্য করে রাখে।
কম্পিউটার-স্টার্ট আচরণ আলাদা একটি মোড। Tunnelblick-এর নথিভুক্ত স্টার্টআপ অপশন আর তার প্রত্যাশিত ক্রেডেনশিয়াল সেটআপ ব্যবহার করুন। লগ-ইন করা ডেস্কটপ সেশনে চালানো কমান্ড আর মেশিনের সঙ্গে শুরু হওয়া সার্ভিস একই প্রসঙ্গ ভাগ করে না। লগ-ইন থাকা অবস্থায় কাজ করা স্ক্রিপ্ট বুটেও চলবে এমন ধরে নেবেন না। স্টার্টআপ পথটি আলাদাভাবে, একই সময়সীমা ও লগিং দিয়ে পরীক্ষা করুন।