নেটওয়ার্ক কনফিগারেশন (netconf)
NETCONF ব্যবহার করে নেটওয়ার্ক যন্ত্র কনফিগারেশন (test)¶
এই 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>
"""
- নেটওয়ার্ক: 192.168.1.0/24
- নেক্সট হপ: 10.1.1.1
এই XML স্ট্রাকচারটি YANG মডেল অনুসরণ করে, যা নেটওয়ার্ক যন্ত্রের কনফিগারেশন বর্ণনা করার জন্য ব্যবহৃত হয়।
এই লাইনগুলো:edit_config
মেথড ব্যবহার করে যন্ত্রের চলমান কনফিগারেশনে পরিবর্তন করছে।- যন্ত্র থেকে পাওয়া উত্তর প্রিন্ট করছে।
হোস্টনেম পাল্টে দেই সফটওয়্যার দিয়ে¶
নিচের এই স্ক্রিপ্টটি একটা 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" হিসেবে পরিবর্তিত হবে। এটি নেটওয়ার্ক অটোমেশনের একটা সরল উদাহরণ, যেখানে একটা পাইথন স্ক্রিপ্ট ব্যবহার করে নেটওয়ার্ক ডিভাইসের কনফিগারেশন পরিবর্তন করা হচ্ছে।