Lab: Sử dụng Python tương tác với Cisco Meraki API -

Lab: Sử dụng Python tương tác với Cisco Meraki API -

Lab: Sử dụng Python tương tác với Cisco Meraki API -

Lab: Sử dụng Python tương tác với Cisco Meraki API -

Lab: Sử dụng Python tương tác với Cisco Meraki API -
Lab: Sử dụng Python tương tác với Cisco Meraki API -
(028) 35124257 - 0933 427 079

Lab: Sử dụng Python tương tác với Cisco Meraki API

24-08-2020
  1. Sơ đồ mạng:
  2. Mô tả:
  • Trong bài lab này, học viên thực hiện kết nối đến Meraki Dashboard API
  • Máy PC phải đáp ứng yêu cầu đã cài đặt trạm làm việc cho developer.
  1. Yêu cầu kĩ thuật:
  • Cài đặt thư viện requests, tabulate trên máy tính.
  • Viết code bằng Python thực hiện yêu cầu:
  • Lấy thông tin các organization
  • Tạo một organization mới
  • Lấy organization id tương ứng với organization name người dùng nhập
  • Lấy danh sách các mạng trong organization
  • Tạo một mạng mới trong organization
  • Lấy network id tương ứng với network name người dùng nhập
  • Lấy danh sách các thiết bị trong mạng
  • Lấy danh sách các thiết bị trong inventory của organization để xem thiết bị nào có thể thêm vào mạng
  • Thêm thiết bị vào trong mạng
  • Di chuyển thiết bị ra khỏi mạng
  • Lấy số serial của thiết bị
  • Lấy thông tin chi tiết của thiết bị
  • Viết menu cho các chức năng trên
  • Viết hàm main cho chương trình
  1. Các bước thực hiện:

Bước 1: Cài đặt thư viện requests, tabulate

- Bấm tổ hợp phím Win+R để chạy cmd

- Trong màn hình cmd gõ:

+python –m pip install requests --user

+python –m pip install tabulate –user

 

Bước 2: Tạo một file python chứa thông tin api_key

base_url = "https://api.meraki.com/api/v0"

api_key = "e24759c28edd1d97715a6ba9ea8bc679c5d2706b"

Lưu file này tên meraki_info.py hoặc tên khác tùy ý.

Bước 3: Tạo file pgpd.py

Trong file pgpd.py ta sẽ chỉnh sửa lại phần headers là dictionary chứa X-Cisco-Meraki-API-Key và import file meraki_info.py

import requests

import json

import sys

 

import meraki_info

 

def get(base_url=meraki_info.base_url,api='',params=''):

    headers = {"X-Cisco-Meraki-API-Key": meraki_info.api_key}

    url = base_url + api

    print("\nExecuting GET '%s'\n"%url)

    try:

        resp = requests.get(url,headers=headers,params=params)

        print("GET '%s' status" %api,resp.status_code,'\n')

        return(resp)

    except:

        print("Something wrong",api)

        sys.exit()

 

def post(base_url=meraki_info.base_url, api='', params=''):

    headers = {"content-type" : "application/json","X-Cisco-Meraki-API-Key": meraki_info.api_key}

    url = base_url + api

    print ("\nExecuting POST '%s'\n"%url)

    try:

        resp= requests.post(url,json.dumps(params),headers=headers)

        print ("POST '%s' Status: "%api,resp.status_code,'\n')

        return(resp)

    except:

       print ("Something wrong with POST /",api)

       sys.exit()

       

def put(base_url=meraki_info.base_url,api='',params=''):

    headers = {"X-Cisco-Meraki-API-Key": meraki_info.api_key}

    url = base_url + api

    print("\nExecuting PUT '%s'\n"%url)

    try:

        resp = requests.put(url,headers=headers,params=params,verify=False)

        print("PUT '%s' status" %api,resp.status_code,'\n')

        return(resp)

    except:

        print("Something wrong",api)

        sys.exit()

 

def delete(base_url=meraki_info.base_url,api='',params=''):

    headers = {"content-type" : "application/json","X-Cisco-Meraki-API-Key": meraki_info.api_key}

    url = base_url + api

    print ("\nExecuting DELETE '%s'\n"%url)

    try:

        resp= requests.delete(url,headers=headers,params=params,verify = False)

        print ("DELETE '%s' Status: "%api,resp.status_code,'\n')

        return(resp)

    except:

       print ("Something wrong with DELETE /",api)

       sys.exit()

 

 

Bước 4: Viết code thực hiện các yêu cầu

  • Import các thư viện và file cần thiết:

import sys

import requests

import json

from tabulate import tabulate

 

import pgpd

  • Viết hàm lấy thông tin các organization:

Vào trang API Document của Meraki như hình dưới để xem url

Trong file pgpd phương thức get đã có base_url là https://api.meraki.com/api/v0 nên chúng ta chỉ cần thêm phần đuôi url bằng cách để vào biến api sẽ được nối với base_url thành url hoàn chỉnh để gửi đi. Do lấy thông tin về nên phương thức của request này là get. Để dữ liệu đầu ra dễ đọc hơn thì chúng ta sẽ dùng json.dumps với 2 tham số là resp.json (lấy dữ liệu ở resp dưới dạng json) và indent dùng để thụt lề.

def get_organizations_list():

    resp = pgpd.get(api="/organizations")

    orgs_list = json.dumps(resp.json(), indent=4)

    return orgs_list

           

Kết quả:

  • Viết hàm tạo một organization mới:
  • Như hình trên ta thấy được parameters cần là name, tiếp theo chúng ta sẽ cho người dùng nhập giá trị của name, tức là tên của organization cần tạo. Tạo một dictionary tên params có key là “name” và value tương ứng là name (name ở đây là biến có giá trị mà chúng ta vừa cho người dùng nhập từ bàn phím). Ở request này chúng ta sử dụng phương thức post để tạo tài nguyên. Lưu ý là dict params khi đưa vào phương thức post sẽ được chuyển sang dạng json.

    def creat_organizations():

        name = input("Nhap ten organization can tao: ")

        params = {

            "name": name

        }

        resp = pgpd.post(api="/organizations", params=params)

        response_json = json.dumps(resp.json(), indent=4)

        return response_json

    Kết quả:

     

    - Viết hàm lấy organization id tương ứng với organization name người dùng nhập:

    Để có thể tương tác với Organization tương ứng thì cần phải có organization id, vì vậy từ danh sách các organization, ta cho người dùng nhập tên của organization để truy xuất ra organization id tương ứng.

    def get_organization_id():

        org_str = get_organizations_list()

        org_list = json.loads(org_str)

        name = str(input("Nhap ten cua organization can chon: "))

        #name = "Public API Lab"

        for org in org_list:

            if org["name"] == name:

                org_id = org["id"]

        return org_id

     

    Kết quả:

    --- Còn tiếp ---


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