Viết chương trình Python tương tác với Meraki Dashboard API -

Viết chương trình Python tương tác với Meraki Dashboard API -

Viết chương trình Python tương tác với Meraki Dashboard API -

Viết chương trình Python tương tác với Meraki Dashboard API -

Viết chương trình Python tương tác với Meraki Dashboard API -
Viết chương trình Python tương tác với Meraki Dashboard API -
(028) 35124257 - 0933 427 079

Viết chương trình Python tương tác với Meraki Dashboard API

29-03-2022

1/ Tạo 1 project và cài đặt thư viện netmiko:

1.1/ Tạo Project:

+ Mở PyCharm, Chọn File à Chọn New Project

+ Tại Location : Chọn nơi lưu và tên project mới.

Ở đây, ta tạo projcet mới là meraki_api.

Có thể tạo sẵn 1 file main.py bằng cách tích vào “Create a main.py welcome script”.

+ Chọn Create.

1.2/ Cài đặt thư viện Request:

+ Chọn Python Packages

+ Nhập vào thanh tìm kiếm : request à Chọn Install.

+ Cài đặt thành công netmiko vào project:

1.3 Tạo file python :

- Chuột phải vào project, chọn New à Chọn Python File

- Nhập Tên file python :

File tạo thành công :

2/ Lập trình python sử dụng thư viện Request để thực hiện:

 + Get the Organization ID

 + Get the networks in the organization

 + Get the devices in a network

 + Get device information

2.1/ Hàm List_the_organizations() - Get the Organization ID

# Hàm thực hiện lấy danh sách các organization
def List_the_organizations(API_KEY_Reader,list_id_or):
    url = 'https://api.meraki.com/api/v1/organizations'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()

    # Lưu thông tin gồm id và name của các organization vào list_id_or[]
    for i in range(0,len(data)):
        list_id_or.append({'id':data[i]['id'],
                           'name':data[i]['name']})

2.2/ Hàm List_the_networks_in_an_organization() - Get the networks in the organization

# Hàm thực hiện lấy danh sách các network từ 1 organization được chỉ định
def List_the_networks_in_an_organization(API_KEY_Reader,list_id_or,list_id_netw):

    # Hiển thị thông tin của các organization
    for i in range(0,len(list_id_or)):
        print(f"{i+1:2}. Name: {list_id_or[i]['name']:30} ID: {list_id_or[i]['id']}")
    id_in = input("Moi chon organization: ")

    # Lấy ID của organization được chọn
    id = list_id_or[int(id_in)-1]['id']

    # Lấy thông tin các network từ organization trên
    url = f'https://api.meraki.com/api/v1/organizations/{id}/networks'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()

    # Lưu thông tin gồm id và name của các network vào list_id_netw[]
    for i in range(0,len(data)):
        list_id_netw.append({'id':data[i]['id'],
                           'name':data[i]['name']})

2.3/ Hàm List_the_devices_in_a_network() - Get the devices in a network

# Hàm thực hiện lấy danh sách các thiết bị từ 1 network được chỉ định
def List_the_devices_in_a_network(API_KEY_Reader,list_id_netw,list_serial_device):

    # Hiển thị thông tin của các network
    for i in range(0,len(list_id_netw)):
        print(f"{i+1:2}. Name: {list_id_netw[i]['name']:30} ID: {list_id_netw[i]['id']}")
    id_in = input("Moi chon network: ")

    # Lấy ID của network được chọn
    id_netw = list_id_netw[int(id_in)-1]['id']

    # Lấy thông tin các device từ network trên
    url = f'https://api.meraki.com/api/v1/networks/{id_netw}/devices'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()

    # Lưu thông tin gồm name, serial, mac, model của các device vào list_serial_device[]
    for i in range(0,len(data)):
        list_serial_device.append({'name':data[i]['name'],
                                   'serial':data[i]['serial'],
                                   'mac':data[i]['mac'],
                                   'model':data[i]['model']})

    # Trả về ID của network được chọn
    return id_netw

2.4/ Hàm Get_device_information() - Get device information

# Hàm thực hiện lấy thông tin cảu thiết bị được chỉ định
def Get_device_information(API_KEY_Reader,id_netw,list_serial_device):

    # Hiển thị thông tin của các device
    for i in range(0,len(list_serial_device)):
        print(f"{i+1:2}. Name: {list_serial_device[i]['name']:30} Serial: {list_serial_device[i]['serial']:25} Mac: {list_serial_device[i]['mac']:25} Model: {list_serial_device[i]['model']}")
    id_in = input("Moi chon device: ")

    # Lấy serial của device được chọn
    serial_device = list_serial_device[int(id_in)-1]['serial']

    # Lấy thông tin device từ serial trên
    url = f'https://api.meraki.com/api/v1/networks/{id_netw}/devices/{serial_device}'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()
    # Đinh dạng và hiển thị thông tin của device
    print(json.dumps(data,indent=4))

3/ Chương trình meraki,py và kết quả thực thi

3.1/ Chương trình meraki.py:

import json
import requests

# Hàm thực hiện lấy danh sách các organization
def List_the_organizations(API_KEY_Reader,list_id_or):
    url = 'https://api.meraki.com/api/v1/organizations'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()

    # Lưu thông tin gồm id và name của các organization vào list_id_or[]
    for i in range(0,len(data)):
        list_id_or.append({'id':data[i]['id'],
                           'name':data[i]['name']})

# Hàm thực hiện lấy danh sách các network từ 1 organization được chỉ định
def List_the_networks_in_an_organization(API_KEY_Reader,list_id_or,list_id_netw):

    # Hiển thị thông tin của các organization
    for i in range(0,len(list_id_or)):
        print(f"{i+1:2}. Name: {list_id_or[i]['name']:30} ID: {list_id_or[i]['id']}")
    id_in = input("Moi chon organization: ")

    # Lấy ID của organization được chọn
    id = list_id_or[int(id_in)-1]['id']

    # Lấy thông tin các network từ organization trên
    url = f'https://api.meraki.com/api/v1/organizations/{id}/networks'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()

    # Lưu thông tin gồm id và name của các network vào list_id_netw[]
    for i in range(0,len(data)):
        list_id_netw.append({'id':data[i]['id'],
                           'name':data[i]['name']})

# Hàm thực hiện lấy danh sách các thiết bị từ 1 network được chỉ định
def List_the_devices_in_a_network(API_KEY_Reader,list_id_netw,list_serial_device):

    # Hiển thị thông tin của các network
    for i in range(0,len(list_id_netw)):
        print(f"{i+1:2}. Name: {list_id_netw[i]['name']:30} ID: {list_id_netw[i]['id']}")
    id_in = input("Moi chon network: ")

    # Lấy ID của network được chọn
    id_netw = list_id_netw[int(id_in)-1]['id']

    # Lấy thông tin các device từ network trên
    url = f'https://api.meraki.com/api/v1/networks/{id_netw}/devices'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()

    # Lưu thông tin gồm name, serial, mac, model của các device vào list_serial_device[]
    for i in range(0,len(data)):
        list_serial_device.append({'name':data[i]['name'],
                                   'serial':data[i]['serial'],
                                   'mac':data[i]['mac'],
                                   'model':data[i]['model']})

    # Trả về ID của network được chọn
    return id_netw

# Hàm thực hiện lấy thông tin cảu thiết bị được chỉ định
def Get_device_information(API_KEY_Reader,id_netw,list_serial_device):

    # Hiển thị thông tin của các device
    for i in range(0,len(list_serial_device)):
        print(f"{i+1:2}. Name: {list_serial_device[i]['name']:30} Serial: {list_serial_device[i]['serial']:25} Mac: {list_serial_device[i]['mac']:25} Model: {list_serial_device[i]['model']}")
    id_in = input("Moi chon device: ")

    # Lấy serial của device được chọn
    serial_device = list_serial_device[int(id_in)-1]['serial']

    # Lấy thông tin device từ serial trên
    url = f'https://api.meraki.com/api/v1/networks/{id_netw}/devices/{serial_device}'
    header = {
        'X-Cisco-Meraki-API-Key': API_KEY_Reader
    }
    response = requests.get(url, headers=header)
    data = response.json()
    # Đinh dạng và hiển thị thông tin của device
    print(json.dumps(data,indent=4))

# API Key mặc định dùng dể lấy thông tin
API_KEY_Reader = '6bec40cf957de430a6f1f2baa056b99a4fac9ea0'

# Tạo 1 list rỗng, list này sẽ chứa id,name của các organization
list_id_or = []
# Tạo 1 list rỗng, list này sẽ chứa id,name của các network từ 1 organization
list_id_netw = []
# Tạo 1 list rỗng, list này sẽ chứa serial,name,mac,model của các device từ 1 network
list_serial_device = []

#Thực hiện gọi hàm List_the_organizations() truyền vào API key và list_id_or
List_the_organizations(API_KEY_Reader,list_id_or)

#Thực hiện gọi hàm List_the_networks_in_an_organization() truyền vào API key, list_id_or, list_id_netw
List_the_networks_in_an_organization(API_KEY_Reader,list_id_or,list_id_netw)

#Hàm List_the_devices_in_a_network() sẽ trả về id của 1 network đã được chọn, gán giá trị vào biến id_network
id_network = List_the_devices_in_a_network(API_KEY_Reader,list_id_netw,list_serial_device)

#Thực hiện gọi hàm Get_device_information() truyền vào API key, id_network và list_serial_device
Get_device_information(API_KEY_Reader,id_network,list_serial_device)

3.2/ Kết quả thực thi chương trình:

 


FORM ĐĂNG KÝ MUA HÀNG
Đặt hàng
icon-cart
0