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

  • Làm quen với Network Automation bằng Python, Netmiko và ntc_templates


    Hôm nay mình hoàn thành 1 bài lab cơ bản về Network Automation sử dụng Python để quản lý thiết bị Cisco thông qua SSH. Mục tiêu của bài lab không phải cấu hình mạng phức tạp mà là làm quen với quy trình tự động hóa việc kiểm tra và thu thập thông tin từ thiết bị. Mô hình lab
    • 01 Cisco IOS Layer 3 Switch chạy trên EVE-NG.
    • Cổng Ethernet0/0 được cấu hình ở chế độ Layer 3 (no switchport) và nhận địa chỉ IP từ DHCP để có thể kết nối trực tiếp với máy tính thật.
    • Máy tính sử dụng macOS, Python và Homebrew.
    Switch được cấu hình SSH với các thông số cơ bản:
    • Tạo tài khoản đăng nhập cục bộ.
    • Cấu hình domain-name.
    • Sinh RSA Key.
    • Cho phép truy cập SSH trên VTY.
    • Thiết lập Enable Password.

    Sau khi hoàn thành cấu hình, mình kiểm tra bằng Terminal:
    ssh vnpro@<IP_Switch>


    Kết nối SSH thành công trước khi bắt đầu viết chương trình Python. Chuẩn bị môi trường Python
    Cài đặt các thư viện cần thiết:
    pip install netmiko ntc_templates

    Trong đó:
    • Netmiko được sử dụng để thiết lập kết nối SSH tới thiết bị Cisco.
    • ntc_templates dùng TextFSM để chuyển kết quả các lệnh CLI sang dữ liệu có cấu trúc (JSON/List/Dictionary), giúp chương trình dễ dàng xử lý hơn.
    Tổ chức chương trình
    Project được chia thành hai file:

    device_list.py
    Lưu thông tin thiết bị cần kết nối:
    • Device Type
    • Địa chỉ IP
    • Username
    • Password
    • Enable Secret
    Password SSH được nhập bằng getpass() để tránh hiển thị trực tiếp trên màn hình.

    main.py
    Chương trình thực hiện các bước:
    • Kết nối SSH bằng Netmiko.
    • Vào Enable Mode.
    • Thực hiện lệnh:
    show vlan
    • Parse kết quả bằng ntc_templates.
    • Chuyển dữ liệu về Dictionary.
    • Kiểm tra trạng thái VLAN.
    • Kiểm tra các Access Port đang thuộc VLAN nào.
    • Hiển thị kết quả ra màn hình.
    • Đóng phiên SSH.
    Điểm mình học được
    Thay vì xử lý chuỗi ký tự trả về từ CLI, ntc_templates giúp chuyển đổi trực tiếp sang dữ liệu có cấu trúc. Ví dụ sau khi parse, chương trình có thể làm việc với dữ liệu như:
    {
    "1": ["Et0/1", "Et0/2"],
    "10": ["Et0/3"]
    }

    Nhờ đó việc kiểm tra:
    • VLAN đã tồn tại hay chưa.
    • Port đã thuộc VLAN mong muốn hay chưa.
    chỉ còn là các thao tác trên Dictionary của Python thay vì phải xử lý chuỗi thủ công. Một số vấn đề gặp phải

    Kết quả
    Sau khi hoàn thành bài lab, chương trình có thể:
    • Kết nối SSH tới Switch.
    • Thu thập thông tin VLAN.
    • Phân tích kết quả bằng ntc_templates.
    • Kiểm tra trạng thái VLAN và Access Port hoàn toàn tự động.

    Đây là một bài lab cơ bản nhưng là bước nền quan trọng trước khi triển khai các tác vụ Network Automation nâng cao như tự động tạo VLAN, cấu hình Interface, kiểm tra Trunk, ACL, Backup cấu hình hoặc quản lý đồng thời nhiều thiết bị bằng Python.
    Click image for larger version

Name:	image.png
Views:	19
Size:	31.7 KB
ID:	442352
Working...
X