Lab Tự Động Kiểm Tra Phiên Bản Thiết Bị Mạng Bằng NetmikoBạ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 LabViết một chương trình bằng Python sử dụng thư viện Netmiko và ntc_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)
Yêu cầu kỹ thuật1. 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
- 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ếtTham 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 SSHconf 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_netmikoBên trong tạo 2 file:
device_list.pyfrom 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.pyfrom 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ìnhChạ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ếtBà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