Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Dùng ngôn ngữ Python để thực hiện xóa thiết bị từ Network Controller ( APIC-EM )

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dùng ngôn ngữ Python để thực hiện xóa thiết bị từ Network Controller ( APIC-EM )

    Sơ đồ mạng:






    Mô tả:
    • Sơ đồ bài thực hành gồm 1 Server Network Controller và 1 PC được đấu nối với nhau như hình 1.1.
    • Trên sơ đồ này, học viên thực hiện kết nối đến Controller, viết hàm get để lấy thông tin bằng ngôn ngữ Python.
    • Máy PC phải đáp ứng yêu cầu đã cài đặt trạm làm việc cho developer.
    Yêu cầu kĩ thuật:
    • Học viên thực hiện thực hiện kết nối máy tính đến Server Network Controller
    • Cài đặt thư viện requests trên máy tính.
    • Viết code bằng Python thực hiện yêu cầu:
    1. [*=2]Lấy danh sách tất cả các thiết bị kết nối với Network Controller [*=2]Lấy số id của thiết bị cần xóa [*=2]Xóa thiết bị
    Các bước thực hiện:

    Bước 1: Cấu hình máy tính ping thành công đến Network Controller
    • Máy PC để IP động là có thể ping được Network Controller
    Bước 2: Cài đặt thư viện requests

    Bấm tổ hợp phím windows +R để mở Command Line (cmd)

    Trong màn hình cmd gõ : python –m pip install requests - -user





    Bước 3: Viết các hàm thực hiện yêu cầu

    Code:
    [SIZE=22px][FONT=Calibri][FONT=Times New Roman]import requests[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]import json[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]import sys[/FONT][/FONT]
    [FONT=Times New Roman]from tabulate import tabulate[/FONT][/SIZE]
    [SIZE=18px][/SIZE]
    • Import các thư viện cần thiết
    Code:
    [SIZE=22px][FONT=Calibri][FONT=Times New Roman]import pgpd[/FONT][/FONT]
    [FONT=Times New Roman]import get_network_device[/FONT][/SIZE]
    [SIZE=18px][/SIZE]
    • Import các file python để có thể sử dụng lại các hàm đã viết
    Code:
    [SIZE=22px][FONT=Calibri][FONT=Times New Roman]def get_device_id():[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]inputString = input("Nhap so thu tu cua thiet bi can xoa:")[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]device =[][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]resp = pgpd.get(api="network-device")[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]response_json = resp.json() [/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]device = response_json["response"][/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman]number = 0[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]for item in device:[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]number +=1[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]if number==int(inputString):[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]id_seleted = item["id"][/FONT][/FONT]
    [FONT=Times New Roman]return id_seleted[/FONT][/SIZE]
    [SIZE=18px][/SIZE]
    • Viết hàm để lấy số id của thiết bị cần xóa: đầu tiên ta sẽ in ra màn hình tất cả các thiết bị kết nối với Network Controller ( bài lab trước đã hướng dẫn ), cho người dùng nhập số thứ tự của thiết bị cần xóa. Tiếp theo ta sẽ khai báo mảng device và gọi api để lấy danh sách các thiết bị, mục đích của việc này là để so sánh số thứ tự người dùng vừa nhập với số thứ tự trong danh sách, từ đó lấy ra số id tương ứng.
    Code:
    [SIZE=22px][FONT=Calibri][FONT=Times New Roman]def delete_device():[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]id = get_device_id()[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]try:[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]resp = pgpd.delete(api="network-device/"+id)[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]status = resp.status_code[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]response_json = resp.json()[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]r = response_json["response"][/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]print(r)[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]except:[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]print("Something wrong")[/FONT][/FONT]
    [FONT=Times New Roman]sys.exit()[/FONT][/SIZE]
    [SIZE=18px][/SIZE]
    • Sau khi có được số id của thiết bị cần xóa, ta gắn thêm số id vào phần api và gửi với phương thức là delete
    Code:
    [SIZE=22px][FONT=Calibri][FONT=Times New Roman]def main():[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]#Lay danh sach cac thiet bi[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]result = get_network_device.network_device_list()[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]print(tabulate(result,[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]headers = ['number','hostname','ip','type','mac address','id'], tablefmt="rst"))[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]result2 = delete_device()[/FONT][/FONT]
    
    [FONT=Calibri][FONT=Times New Roman]if __name__ == '__main__':[/FONT][/FONT]
    [FONT=Times New Roman]sys.exit(main())[/FONT][/SIZE]
    [SIZE=18px][/SIZE]
    • Đây là hàm main, thực hiện các công việc như lấy danh sách các thiết bị và in ra màn hình, gọi hàm delete_device()
    Bước 4: Chạy file python

    Đây là danh sách thiết bị hiện có trong Network Controller






    Chạy file delete_device.py





    Vậy là chúng ta đã xóa thành công, kiểm tra lại trên Network Controller, nó sẽ báo no devices found!




    Thank you.
    Nguồn : VNPRO
Working...
X