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