নেটওয়ার্ক কনফিগারেশন (netconf)
NETCONF ব্যবহার করে নেটওয়ার্ক যন্ত্র কনফিগারেশন¶
এই NETCONF উদাহরণটি বাংলায় একটু বোঝার চেষ্টা করছি। এই কোডটি NETCONF (নেটওয়ার্ক কনফিগারেশন প্রোটোকল) ব্যবহার করে একটা সিসকো IOS XE যন্ত্রে একটা নতুন IP রুট যোগ করছে। আসুন, প্রতিটি অংশ বিস্তারিতভাবে দেখি:
এই লাইনটিncclient
লাইব্রেরি থেকে manager
মডিউল ইমপোর্ট করছে। ncclient
হল পাইথনে NETCONF ক্লায়েন্ট বাস্তবায়নের জন্য একটা লাইব্রেরি।
model = manager.connect(host='devnetsandboxiosxe.cisco.com',
port=830,
username='admin',
password='C1sco12345',
hostkey_verify=False,
device_params={'name':'iosxe'})
host
: যন্ত্রের IP অ্যাড্রেস বা হোস্টনাম।
- port
: NETCONF এর জন্য ব্যবহৃত পোর্ট (সাধারণত 830)।
- username
এবং password
: যন্ত্রে ঢোকার জন্য পরিচয়পত্র।
- hostkey_verify=False
: নিরাপত্তা যাচাই বন্ধ করে (শুধুমাত্র পরীক্ষামূলক পরিবেশে ব্যবহার করুন)।
- device_params
: যন্ত্রের ধরন নির্দেশ করে (এখানে IOS XE)।
config_data = """
<config>
<native xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
<ip>
<route>
<ip-route-interface-forwarding-list>
<prefix>192.168.1.0</prefix>
<mask>255.255.255.0</mask>
<fwd-list>
<fwd>10.1.1.1</fwd>
</fwd-list>
</ip-route-interface-forwarding-list>
</route>
</ip>
</native>
</config>
"""
এই XML স্ট্রাকচারটি YANG মডেল অনুসরণ করে, যা নেটওয়ার্ক যন্ত্রের কনফিগারেশন বর্ণনা করার জন্য ব্যবহৃত হয়।
এই লাইনগুলো: 1.edit_config
মেথড ব্যবহার করে যন্ত্রের চলমান কনফিগারেশনে পরিবর্তন করছে।
2. যন্ত্র থেকে প্রাপ্ত উত্তর প্রিন্ট করছে।
এই লাইনটি NETCONF সেশন বন্ধ করছে, যা সুরক্ষিতভাবে সংযোগ শেষ করার জন্য গুরুত্বপূর্ণ।
এই কোডের ব্যবহারিক প্রয়োগ¶
-
দ্রুত কনফিগারেশন পরিবর্তন: প্রকৌশলীরা এই ধরনের স্ক্রিপ্ট ব্যবহার করে দ্রুত এবং নির্ভুলভাবে নেটওয়ার্ক যন্ত্রের কনফিগারেশন পরিবর্তন করতে পারেন।
-
বড় নেটওয়ার্ক ম্যানেজমেন্ট: একই স্ক্রিপ্ট ব্যবহার করে একাধিক যন্ত্রে একই সময়ে পরিবর্তন করা যায়, যা বড় নেটওয়ার্ক ম্যানেজমেন্টয় অত্যন্ত কার্যকর।
-
স্বয়ংক্রিয় নেটওয়ার্ক ম্যানেজমেন্ট: এই ধরনের স্ক্রিপ্ট ব্যবহার করে নেটওয়ার্ক ম্যানেজমেন্টর বিভিন্ন কাজ স্বয়ংক্রিয় করা যায়।
-
নিরাপদ পরিবর্তন: NETCONF প্রোটোকল ব্যবহার করে কনফিগারেশন পরিবর্তন করা অধিক নিরাপদ, কারণ এটি পরিবর্তনের আগে যাচাই করে এবং সম্পূর্ণ পরিবর্তন সফল না হলে পূর্ববর্তী অবস্থায় ফিরে যায়।
-
প্রোগ্রামেটিক নেটওয়ার্ক ম্যানেজমেন্ট: এই ধরনের কোড ব্যবহার করে, প্রকৌশলীরা নেটওয়ার্ক ম্যানেজমেন্ট অ্যাপ্লিকেশন তৈরি করতে পারেন যা স্বয়ংক্রিয়ভাবে নেটওয়ার্ক পরিস্থিতি অনুযায়ী কনফিগারেশন পরিবর্তন করতে পারে।
এই ধরনের প্রযুক্তি ব্যবহার করে, নেটওয়ার্ক ম্যানেজমেন্ট আরও দক্ষ, নির্ভরযোগ্য এবং স্কেলেবল হয়, যা আধুনিক জটিল নেটওয়ার্ক ম্যানেজমেন্টর জন্য অত্যন্ত গুরুত্বপূর্ণ।
হোস্টনেম পাল্টে দেই সফটওয়্যার দিয়ে¶
নিচের এই স্ক্রিপ্টটি একটা Cisco IOS XE ডিভাইসের সাথে NETCONF প্রোটোকল ব্যবহার করে যোগাযোগ করে এবং তার হোস্টনেম পরিবর্তন করে। এটি নেটওয়ার্ক অটোমেশনের একটা সাধারণ উদাহরণ, যেখানে একটা পাইথন স্ক্রিপ্ট ব্যবহার করে নেটওয়ার্ক ডিভাইসের কনফিগারেশন পরিবর্তন করা হচ্ছে। এই ধরনের স্ক্রিপ্ট ব্যবহার করে, নেটওয়ার্ক ইঞ্জিনিয়াররা বড় নেটওয়ার্কে দ্রুত এবং নির্ভুলভাবে পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, একই স্ক্রিপ্ট ব্যবহার করে শত শত ডিভাইসের হোস্টনেম একসাথে পরিবর্তন করা যেতে পারে, যা ম্যানুয়ালি করলে অনেক সময় ও শ্রম সাপেক্ষ হত। তবে, এই ধরনের স্ক্রিপ্ট ব্যবহার করার সময় সতর্কতা অবলম্বন করা প্রয়োজন। বিশেষ করে, নিরাপত্তার বিষয়টি গুরুত্বপূর্ণ। সংবেদনশীল ডাটা যেমন পাসওয়ার্ড সুরক্ষিত রাখা, এবং নেটওয়ার্ক ডিভাইসগুলোতে সঠিক অ্যাক্সেস কন্ট্রোল নিশ্চিত করা অত্যন্ত জরুরি।
এই কোডটি লাইন বাই লাইন বুঝে নিচ্ছি:
এই লাইনটি ncclient লাইব্রেরি থেকে manager মডিউল ইমপোর্ট করছে। ncclient হল একটা পাইথন লাইব্রেরি যা NETCONF প্রোটোকল ব্যবহার করে নেটওয়ার্ক ডিভাইসের সাথে যোগাযোগ করতে ব্যবহৃত হয়।model = manager.connect(host='devnetsandboxiosxe.cisco.com',
port=830,
username='admin',
password='C1sco12345',
hostkey_verify=False,
device_params={'name':'iosxe'})
host
হল ডিভাইসের অ্যাড্রেস
- port
830 হল NETCONF এর জন্য স্ট্যান্ডার্ড পোর্ট
- username
এবং password
হল ডিভাইসে লগ ইন করার জন্য ক্রেডেনশিয়াল
- hostkey_verify=False
SSH হোস্ট কী যাচাই বন্ধ করে দেয়, যা নিরাপত্তার দিক থেকে ঝুঁকিপূর্ণ
- device_params={'name':'iosxe'}
নির্দিষ্ট করে যে এটি একটা Cisco IOS XE ডিভাইস
config_data = """
<config>
<native
xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-native">
<hostname>Link3_Test2</hostname>
</native>
</config>"""
edit_config
অপারেশন সম্পাদন করছে, যা 'running' কনফিগারেশনে পরিবর্তন করে। এটি আমাদের সংজ্ঞায়িত config_data
ব্যবহার করছে হোস্টনেম পরিবর্তন করতে।
এই লাইনটি সার্ভারের রেসপন্স প্রিন্ট করে। এটি আমাদেরকে জানাবে যে অপারেশনটি সফল হয়েছে কি না।
এই শেষ লাইনটি NETCONF সেশন বন্ধ করে। এটি সম্পদ মুক্ত করে এবং সংযোগ সঠিকভাবে শেষ করে।
এই স্ক্রিপ্টটি চালানোর ফলে, নির্দিষ্ট Cisco ডিভাইসের হোস্টনেম "Link3_Test2" হিসেবে পরিবর্তিত হবে। এটি নেটওয়ার্ক অটোমেশনের একটা সরল উদাহরণ, যেখানে একটা পাইথন স্ক্রিপ্ট ব্যবহার করে নেটওয়ার্ক ডিভাইসের কনফিগারেশন পরিবর্তন করা হচ্ছে।