+ 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.
+ 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:
- 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 :
+ 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: