Skip to content

রেস্ট এপিআই কনফিগারেশন (restconf)

বাইরের একটা উদাহরণ

নেটওয়ার্কের উদাহরন দেখতে দেখতে বোর হয়ে গেছেন নাকি?

আসলে, RESTCONF এবং Yang Model এর মাধ্যমে কনফিগারেশন এবং ডাটা ব্যবস্থাপনার উদাহরণ হিসেবে আমরা OpenWeatherMap API ব্যবহার করে কিভাবে আবহাওয়ার ডাটা সংগ্রহ এবং প্রক্রিয়াকরণ করতে পারি তা বিস্তারিতভাবে আলোচনা করবো। RESTCONF হল একটা প্রটোকল যা RESTful APIs ব্যবহার করে নেটওয়ার্ক ডিভাইস কনফিগার এবং ম্যানেজমেন্ট করার জন্য ব্যবহৃত হয়। Yang Model হল একটা ডাটা মডেলিং ভাষা যা ডাটার কাঠামো এবং কনফিগারেশন বর্ণনা করতে ব্যবহৃত হয়।

উদাহরণ: OpenWeatherMap API

আমরা OpenWeatherMap API ব্যবহার করে ঢাকার আবহাওয়ার ডাটা সংগ্রহ করবো। এই প্রক্রিয়াতে আমরা নিচের ধাপগুলো অনুসরণ করবো: 1. API এর URL এবং প্যারামিটার নির্ধারণ। 2. GET রিকোয়েস্ট পাঠানো। 3. রেসপন্স যাচাই করা এবং ডাটা এক্সট্র্যাক্ট করা।

Python কোড

import requests

# OpenWeatherMap API এর URL
url = 'https://api.openweathermap.org/data/2.5/weather'

# API রিকোয়েস্টের জন্য প্যারামিটার
params = {
    'q': 'Dhaka', # শহরের নাম
    'units': 'metric',
    'appid': '37d0af6ce46a25155ce558cb4cc6c57d' # অ্যাপ আইডি (ফ্রি সাবস্ক্রিপশন দ্বারা প্রাপ্ত)
}

# API তে GET রিকোয়েস্ট পাঠানো
response = requests.get(url, params=params)

# রিকোয়েস্ট সফল হয়েছে কিনা তা যাচাই করা (স্ট্যাটাস কোড 200)
if response.status_code == 200:
    # আবহাওয়ার ডাটা এক্সট্র্যাক্ট এবং প্রিন্ট করা
    weather_data = response.json()
    print("Weather in Dhaka:")
    print("Temperature:", weather_data['main']['temp'], "C")
    print("Description:", weather_data['weather'][0]['description'])
else:
    print("Failed to retrieve weather data. Status code:", response.status_code)

ব্যাপারটা বুঝতে চাই

  1. লাইব্রেরি ইমপোর্ট করা:

    import requests
    
    এখানে requests লাইব্রেরি ইমপোর্ট করা হয়েছে যা HTTP রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়।

  2. API URL এবং প্যারামিটার নির্ধারণ:

    url = 'https://api.openweathermap.org/data/2.5/weather'
    params = {
        'q': 'Dhaka',
        'units': 'metric',
        'appid': '37d0af6ce46a25155ce558cb4cc6c57d'
    }
    
    এখানে আমরা API এর URL এবং প্যারামিটার নির্ধারণ করেছি। q প্যারামিটার দ্বারা শহরের নাম, units প্যারামিটার দ্বারা তাপমাত্রার ইউনিট (সেলসিয়াস), এবং appid প্যারামিটার দ্বারা API কী প্রদান করা হয়েছে।

  3. GET রিকোয়েস্ট পাঠানো:

    response = requests.get(url, params=params)
    
    এখানে আমরা requests.get ফাংশনের মাধ্যমে API তে GET রিকোয়েস্ট পাঠিয়েছি।

  4. রিকোয়েস্ট সফল হয়েছে কিনা তা যাচাই করা:

    if response.status_code == 200:
        weather_data = response.json()
        print("Weather in Dhaka:")
        print("Temperature:", weather_data['main']['temp'], "C")
        print("Description:", weather_data['weather'][0]['description'])
    else:
        print("Failed to retrieve weather data. Status code:", response.status_code)
    
    এখানে আমরা স্ট্যাটাস কোড 200 কিনা তা যাচাই করেছি। যদি রিকোয়েস্ট সফল হয়, তাহলে আমরা JSON ফরম্যাটে ডাটা এক্সট্র্যাক্ট করেছি এবং প্রিন্ট করেছি। অন্যথায়, ব্যর্থতার বার্তা প্রিন্ট করেছি।

কি বুঝলাম?

এই উদাহরণটি আমাদের দেখিয়েছে কিভাবে RESTful API ব্যবহার করে আবহাওয়ার ডাটা সংগ্রহ এবং প্রক্রিয়াকরণ করা যায়। RESTCONF এবং Yang Model ব্যবহার করে নেটওয়ার্ক ডিভাইসের কনফিগারেশন এবং ডাটা ম্যানেজমেন্টও একইভাবে করা যায়। এই পদ্ধতি সহজ এবং কার্যকর, যা আমাদের নেটওয়ার্ক ব্যবস্থাপনা আরও উন্নত করতে সাহায্য করে।

সিসকো ডেভনেট স্যান্ডবক্সে কিছু উদাহরন পাইথনে

এই উদাহরণে, আমরা Cisco DevNet Sandbox ব্যবহার করে Cisco IOS XE ডিভাইসের RESTCONF API ব্যবহার করে ইন্টারফেসের ডাটা সংগ্রহ করতে চাইছি। এটি কিভাবে করা যায় এবং কীভাবে প্রোগ্রামিং ভাষার সাহায্যে তা নিয়ে নিম্নলিখিত উদাহরণে আলোচনা করা হয়েছে। Cisco DevNet Sandbox হল একটা উন্নত ভার্চুয়াল ল্যাব যেখানে আপনি বিভিন্ন Cisco ডিভাইসের মধ্যে API ব্যবহার টেস্ট করতে পারেন ইচ্ছেমত।

Python কোড

import requests

USER = 'admin'
PASS = 'C1sco12345'

# RESTCONF API এর URL
url = "https://devnetsandboxiosxe.cisco.com:443/restconf/data/Cisco-IOS-XE-native:native/interface"

# GET রিকোয়েস্ট পাঠানো
response = requests.request("GET", url, auth=(USER, PASS), verify=False)

# রেসপন্স টেক্সট প্রিন্ট করা
print(response.text)

মানে?

  1. RESTCONF URL সেট করা:

    url = "https://devnetsandboxiosxe.cisco.com:443/restconf/data/Cisco-IOS-XE-native:native/interface"
    
    এটি RESTCONF API এর URL যা ব্যবহার করে আমরা ইন্টারফেসের ডাটা প্রাপ্ত করতে চাইছি।

  2. GET রিকোয়েস্ট পাঠানো:

    response = requests.request("GET", url, auth=(USER, PASS), verify=False)
    
    requests.request ফাংশন ব্যবহার করে আমরা GET রিকোয়েস্ট পাঠাচ্ছি RESTCONF API এর মাধ্যমে। এখানে auth প্যারামিটারের মাধ্যমে ইউজারনেম এবং পাসওয়ার্ড প্রদান করা হয়েছে এবং verify=False দ্বারা SSL সার্টিফিকেট ভেরিফাইশন বাতিল করা হয়েছে।

  3. রেসপন্স প্রিন্ট করা:

    print(response.text)
    
    রিকোয়েস্ট প্রসেসিং শেষে সার্ভার থেকে ফিরে এসে রেসপন্সের টেক্সট প্রিন্ট করা হয়েছে। এটি ডিভাইসের ইন্টারফেস কনফিগারেশন সম্পর্কিত ডাটা হতে পারে।

কি বুঝলাম?

এই উদাহরণটি আমাদের দেখিয়েছে কিভাবে Cisco DevNet Sandbox ব্যবহার করে RESTCONF API ব্যবহার করা যায়। এটি ব্যবহারকারীদের জন্য একটা অভিজ্ঞান প্রদান করে যা তাদেরকে নেটওয়ার্ক ব্যবস্থাপনা এবং ডাটা ম্যানেজমেন্টর পরিস্থিতি উন্নত করতে সাহায্য করতে পারে।

অবশ্যই, আমি এই উদাহরণটি নিয়ে আরও বিস্তারিতভাবে বাংলায় বুঝতে চাই:

সিসকো ডেভনেট স্যান্ডবক্সে RESTCONF API ব্যবহার

এই কোডটি সিসকো ডেভনেট স্যান্ডবক্সে RESTCONF API ব্যবহার করে নেটওয়ার্ক যন্ত্রের ইন্টারফেস সম্পর্কিত ডাটা সংগ্রহ করে। আসুন, প্রতিটি লাইন বিস্তারিতভাবে বুঝি:

headers = {
    "Accept": "application/yang-data+json",
    "Content-Type": "application/yang-data+json",
}
এখানে আমরা API অনুরোধের জন্য হেডার সেট করছি। এটি বলছে যে আমরা YANG ডেটা মডেল ভিত্তিক JSON ফরম্যাটে ডাটা চাই এবং পাঠাব। YANG হল নেটওয়ার্ক যন্ত্রের কনফিগারেশন এবং অবস্থা বর্ণনা করার জন্য ব্যবহৃত একটা ভাষা।

url = "https://devnetsandboxiosxe.cisco.com:443/restconf/data/ietf-interfaces:interfaces"
এটি RESTCONF API এর URL। এই অ্যাড্রেসয় আমরা অনুরোধ পাঠাব। ietf-interfaces:interfaces অংশটি নির্দেশ করে যে আমরা যন্ত্রের ইন্টারফেস সম্পর্কিত ডাটা চাইছি।

response = requests.request("GET", url, auth=(USER, PASS), headers=headers, verify=False)
এই লাইনটি API তে GET অনুরোধ পাঠায়। এখানে: - "GET" নির্দেশ করে যে আমরা ডাটা চাইছি, পরিবর্তন করছি না। - auth=(USER, PASS) ব্যবহারকারী নাম এবং পাসওয়ার্ড প্রদান করে। - headers=headers আমাদের সেট করা হেডার ব্যবহার করে। - verify=False SSL সার্টিফিকেট যাচাই বন্ধ করে, যা শুধুমাত্র পরীক্ষামূলক পরিবেশে করা উচিত।

print(response.text)
এই লাইনটি API থেকে প্রাপ্ত উত্তর প্রদর্শন করে। এটি যন্ত্রের ইন্টারফেস সম্পর্কিত বিস্তারিত ডাটা দেখাবে।

এই কোডের ব্যবহারিক প্রয়োগ

  1. নেটওয়ার্ক মনিটরিং: এই কোড ব্যবহার করে, প্রকৌশলীরা যন্ত্রের ইন্টারফেসের অবস্থা নিয়মিত মনিটরিং করতে পারেন।

  2. সমস্যা নির্ণয়: কোনো ইন্টারফেসে সমস্যা থাকলে, এই API ব্যবহার করে দ্রুত ডাটা সংগ্রহ করে সমস্যার কারণ নির্ণয় করা সহজ হয়।

  3. স্বয়ংক্রিয় কনফিগারেশন: এই ধরনের API ব্যবহার করে, বড় নেটওয়ার্কে একসাথে অনেক যন্ত্রের কনফিগারেশন পরিবর্তন করা যায়।

  4. ডাটা বিশ্লেষণ: প্রাপ্ত ডাটা ব্যবহার করে, নেটওয়ার্কের কর্মক্ষমতা বিশ্লেষণ এবং উন্নতি করা যায়।

  5. নিরাপত্তা টেস্ট: ইন্টারফেসের ডাটা পর্যালোচনা করে, সম্ভাব্য নিরাপত্তা ঝুঁকি শনাক্ত করা যায়।

এই ধরনের API ব্যবহার করে, নেটওয়ার্ক ম্যানেজমেন্ট আরও দক্ষ, নির্ভরযোগ্য এবং স্বয়ংক্রিয় করা যায়, যা বিশেষ করে বড় এবং জটিল নেটওয়ার্ক ম্যানেজমেন্টয় অত্যন্ত মূল্যবান।