Bangla programming tutorials

Batch Command ব্যবহার করে উইন্ডোজে রিডানডেন্ট নেটওয়ার্ক তৈরী করার সবথেকে সহজ পদ্ধতি ।

Redundant নেটওয়ার্ক

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

 

এখন এটাকে টাস্ক সিডিউলার দিয়ে ৩০ মিনিট/১০ মিনিট দিন ।

এর কাজ হলো ১০ মিনিট পর পর চেক করে দেখবে এখন যে ওয়াইফাই লাইনে আছেন যুক্ত তা প্রাইমারী লাইনটাই কিনা । যদি না হয় তবে প্রাইমারী তে সুইচ করবে এবং পিং করে চেক করে দেখবে ডাউন কিনা, ডাউন না হলে প্রাইমারী থেকে সাপ্লাই হবে আর ডাউন হলে আবার আগের ব্যাকআপ লাইনে চলে যাবে ।

 

আসলে আমার পার্সোনাল সার্ভার কে সবসময় অনলাইন রাখতে রিডানডেন্ট নেটের দরকার ছিলো, ভাবলাম রাউটার কিনবো কিন্তু পরে ভাবলাম সহজেই রাউটারের কাজটা কমান্ড দিয়েই করা সম্ভব তাহলে রাউটার কেনার দরকার কি । তাই এই স্ক্রিপ্টটা কোড করলাম, এবং এটার পার্ফমেন্স সন্তোষজনক ।

 

লেখক-

মো: জোবায়ের আলম

ফাউন্ডার, গ্রিনওয়েব বাংলাদেশ ।

 


Share This Post to Keep This Site Alive

No comments to display for this post.

Leave A Feedback


Captcha (Enter the number on the below field): 850