Batch Command ব্যবহার করে উইন্ডোজে রিডানডেন্ট নেটওয়ার্ক তৈরী করার সবথেকে সহজ পদ্ধতি ।
ধরুন অাপনার অফিসে বা বাসায় একাধিক ইন্টারনেট কানেকশন অাছে, তো একটা কে প্রাইমারী রাখতে এবং অন্যটাকে সেকেন্ডারী রাখতে চান । যাতে প্রাইমারী কানেকশন ডাউন হলে সেকেন্ডারী থেকে নেট সাপ্লাই হয় ।
প্রথমে আমরা দুটি ব্যাচ ফাইল বানাবো অামরা:
goto checker
:checker
ping -n 1 1.1.1.1 | findstr TTL && goto connected
ping -n 1 1.1.1.1 | findstr TTL || goto checkfirst
:connected
exit
:checkfirst
for /f "delims=: tokens=2" %%n in ('netsh wlan show interface name="Wireless Network Manager" ^| findstr "Profile"') do set "Network=%%n"
set "Network=%Network:~1%"
set "Network=%Network:~0,-1%"
if "%Network%" == "wifi 1 name" (
netsh wlan connect name="wifi 2 name"
timeout /t 5
goto checker2
) ELSE (
netsh wlan connect name="wifi 1 name"
timeout /t 5
goto checker2
)
:checker2
ping -n 1 1.1.1.1 | findstr TTL && goto connected
ping -n 1 1.1.1.1 | findstr TTL || goto checksecond
:checksecond
netsh interface set interface "Wireless Network Connection" disabled
netsh interface set interface "Wireless Network Connection" enabled
exit
উপরের কোড টি swtich.bat নামে সেভ করুন । এবং রেড কালার এর জায়গা গুলো পরিবর্তন করুন নিচের মত করে
wifi 1 name= অাপনার প্রখম wifi এর নাম
wifi 2 name= অাপনার ২য় wifi এর নাম
Wireless Network Connection = অাপনার নেটওয়ার্ক ইন্টারফেসের নাম । অবশ্যই এই ৩টা ডেটা সঠিক ভাবে সেট করবেন অন্যথায় স্ক্রিপ্টটি কাজ করবে না । এটা পাবেন Control Panel\Network and Internet\Network Connections এ গেলে দেখবেন যেটাই কানেক্টেড অাছে সেটা ।
এবার উইন্ডোজ টাস্ক সিডিউলার অপেন করে ১ মিনিট পর পর এই স্ক্রিপ্ট টা রান করার ব্যবস্হা করুন ।
কিভাবে টাস্ক সিডিউলার দিয়ে রান করাবেন? = https://www.thewindowsclub.com/how-to-schedule-batch-file-run-automatically-windows-7
কিভাবে প্রতি মিনিটে রান করাবেন? = https://lazywinadmin.com/2012/03/run-this-task-every-minute.html
উপরের স্ক্রিপ্টের কাজ কি?
এটি যখন রান হবে তখন অটোমেটিক্যালি ওয়াইফাই এর নাম বের করবে এরপর ১.১.১.১ অাইপিতে (ক্লাউড ফ্লেয়ার) পিং করে দেখবে হয় কিনা যদি না হয় তার মানে এখন যে ওয়াইফাই লাইনে কানেক্টেড অাছে তা ডাউন অাছে তাই সে ২য় লাইনে অটো কানেক্ট হবে এবং অাবার চেক করে দেখবে পিং হয় কিনা যদি না হয় তবে সে অাপনার ওয়াইফাই সিস্টেম কে অন অফ করবে । অার কানেক্ট হলে প্রোগ্রাম এক্সিট করবে ।
এটা অাপনার সিস্টেমের ইন্টারনেট অাপটাইমকে বৃদ্ধি করবে, স্পেশালী যেসব সিস্টেমে ইন্টারনেট ২৪ ঘন্টাই চালু রাখতে হয় যেমন পার্সোনাল সার্ভার তাতে কম খরচে এটা করতে পারবেন । তবে প্রোফেশনাল সার্ভিসে অবশ্যই হার্ডওয়ার লেভেলের লোড ব্যালেন্সার ব্যবহার করবেন । বাজারে এখন এই রকম রিডানডেন্ট রাউটার পাওয়া যায় যার দাম অনেক বেশী ।
যদি একটা কানেকশন কে প্রাইমারী করতে চান তাহলে ?
ধরুন রিডানডেন্ট + প্রাইমারি লাগবে সে ক্ষেত্রে নিচের কোডটি দিয়ে নতুন একটা primary.bat ফাইল তৈরী করুন
@echo off
goto checkfirst
:checkfirst
for /f "delims=: tokens=2" %%n in ('netsh wlan show interface name="Wireless Network Manager" ^| findstr "Profile"') do set "Network=%%n"
set "Network=%Network:~1%"
set "Network=%Network:~0,-1%"
if "%Network%" == "primary wifi name" (
goto checker3
) ELSE (
netsh wlan connect name="primary wifi name"
timeout /t 3
goto checker3
)
:checker3
ping -n 1 1.1.1.1 | findstr TTL && goto connected
ping -n 1 1.1.1.1 | findstr TTL || goto setfirst
:connected
exit
:setfirst
netsh wlan connect name="%Network%"
exit
এখন এটাকে টাস্ক সিডিউলার দিয়ে ৩০ মিনিট/১০ মিনিট দিন ।
এর কাজ হলো ১০ মিনিট পর পর চেক করে দেখবে এখন যে ওয়াইফাই লাইনে অাছেন যুক্ত তা প্রাইমারী লাইনটাই কিনা । যদি না হয় তবে প্রাইমারী তে সুইচ করবে এবং পিং করে চেক করে দেখবে ডাউন কিনা, ডাউন না হলে প্রাইমারী থেকে সাপ্লাই হবে অার ডাউন হলে অাবার অাগের ব্যাকঅাপ লাইনে চলে যাবে ।
অাসলে অামার পার্সোনাল সার্ভার কে সবসময় অনলাইন রাখতে রিডানডেন্ট নেটের দরকার ছিলো, ভাবলাম রাউটার কিনবো কিন্তু পরে ভাবলাম সহজেই রাউটারের কাজটা কমান্ড দিয়েই করা সম্ভব তাহলে রাউটার কেনার দরকার কি । তাই এই স্ক্রিপ্টটা কোড করলাম, এবং এটার পার্ফমেন্স সন্তোষজনক ।
লেখক-
মো: জোবায়ের অালম
ফাউন্ডার, গ্রিনওয়েব বাংলাদেশ ।