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.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lab Tự Động Kiểm Tra Phiên Bản Thiết Bị Mạng Bằng Netmiko

    Lab Tự Động Kiểm Tra Phiên Bản Thiết Bị Mạng Bằng Netmiko


    Bạn đang học Python để tự động hóa mạng? Đây là một bài lab cực kỳ thực tế giúp bạn tự động kiểm tra phiên bản thiết bị mạng Cisco thông qua SSH — một kỹ năng nền tảng trong hành trình trở thành Network Automation Engineer!

    Mục tiêu Lab


    Viết một chương trình bằng Python sử dụng thư viện Netmikontc_templates để:
    • Kết nối SSH tới thiết bị Cisco
    • Gửi lệnh show version
    • Phân tích kết quả và cảnh báo nếu firmware đã cũ
    Mô hình bài lab
    • 1 Switch Cisco (hoặc router tương thích)
    • 1 PC chạy Linux hoặc WSL (Windows Subsystem for Linux)
    PC (Python script) <-------> Switch (SSH-enabled)

    Yêu cầu kỹ thuật


    1. Thiết bị vật lý và cấu hình mạng
    • Kết nối dây mạng giữa PC và Switch
    • Cấu hình địa chỉ IP, hostname, và password cơ bản trên Switch
    • Bật SSH trên thiết bị Cisco
    2. Môi trường phần mềm
    • PC sử dụng Linux hoặc WSL (để hỗ trợ ntc_templates)
    • Cài đặt thư viện:
      bashCopyEditpip install netmiko ntc_templates
    Các bước thực hiện


    Bước 1: Cài đặt thư viện cần thiết


    Tham khảo lại Lab 35 để cài đặt:

    pip install netmiko ntc_templates

    Bước 2: Cấu hình Switch cho phép SSH


    conf t
    hostname SW1
    ip domain-name vnpro.local
    crypto key generate rsa modulus 1024
    username admin secret 321
    line vty 0 4
    login local
    transport input ssh

    Gán IP cho VLAN:

    interface vlan 1
    ip address 10.215.26.170 255.255.255.0
    no shutdown

    Bước 3: Tạo thư mục và viết code


    Tạo thư mục: Lab_netmiko


    Bên trong tạo 2 file:

    device_list.py


    from getpass import getpass

    passwd = getpass("Nhập mật khẩu SSH: ")

    sw1 = {
    "device_type": "cisco_ios",
    "ip": "10.215.26.170",
    "username": "admin",
    "password": passwd,
    "secret": "321"
    }

    devices = [sw1]

    main.py


    from netmiko import ConnectHandler
    from multiprocessing import Process
    from ntc_templates.parse import parse_output
    from device_list import devices

    def check_ver(device):
    ssh = ConnectHandler(**device)
    data = ssh.send_command("show version")
    data_dict = parse_output(platform="cisco_ios", command="show version", data=data)

    for i in data_dict:
    if str(i["version"]) <= "16.12.2":
    print(f'{i["rommon"]} IP {device["ip"]} version hiện tại {i["version"]} cần cập nhật!')
    else:
    print(f'{i["rommon"]} IP {device["ip"]} version hiện tại {i["version"]} phiên bản mới nhất.')

    ssh.disconnect()

    def main():
    for i in devices:
    proc = Process(target=check_ver, args=(i,))
    proc.start()

    if __name__ == "__main__":
    main()

    Kết quả khi chạy chương trình


    Chạy lệnh:

    python3 main.py

    Kết quả mong đợi:

    IOS-XE IP 10.215.26.170 version hiện tại 16.12.3 phiên bản mới nhất.

    Lưu ý & Mở rộng
    • Bạn có thể thêm nhiều thiết bị khác vào device_list.py để kiểm tra hàng loạt.
    • Có thể lưu log vào file để phục vụ báo cáo định kỳ.
    • Kết hợp với Excel hoặc gửi mail cảnh báo nếu phát hiện version cũ.
    Tổng kết


    Bài lab này giúp bạn:
    • Thành thạo việc kết nối SSH tự động
    • Sử dụng thư viện Netmiko và ntc_templates một cách bài bản
    • Hiểu được cách tự động hóa kiểm tra firmware thiết bị mạng Cisco — một kỹ năng cực hữu ích trong DevNet và Network Automation!
    Tiếp theo: Bạn hãy thử mở rộng bài này để kiểm tra serial number, uptime, hoặc model thiết bị!

    Bạn muốn được hướng dẫn chi tiết từng bước trên lớp? Tham gia khoá học Network Automation tại VnPro nhé!

    #Netmiko #PythonAutomation #DevNet #VnPro #NetworkAutomation #Cisco #SSH #ntc_templates #LabThựcChiến
    Click image for larger version  Name:	Netmiko.png Views:	0 Size:	23.2 KB ID:	431843
    Last edited by dangquangminh; 05-06-2025, 10:50 AM.
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X