📌 Bài viết này đặc biệt phù hợp với các kỹ sư mạng, quản trị viên hệ thống và những ai đang tìm hiểu về tự động hóa mạng. Nếu bạn đang làm việc với thiết bị Cisco hoặc cần triển khai hệ thống tự động hóa cấu hình, đây sẽ là một tài liệu hữu ích dành cho bạn!
Viết chương trình sử dụng thư viện Netmiko của Python để cấu hình các thiết bị mạng
1. Giới thiệu
Trong lĩnh vực quản trị mạng, việc tự động hóa cấu hình thiết bị là một yếu tố quan trọng giúp tối ưu hóa hiệu suất và đảm bảo tính ổn định của hệ thống. Netmiko, một thư viện Python mạnh mẽ, giúp các kỹ sư mạng, quản trị viên hệ thống và những người quan tâm đến tự động hóa mạng dễ dàng kết nối và thực hiện cấu hình thiết bị qua giao thức SSH.
Vào tháng 3/2025, VnPro đã thực hiện và chạy thử thành công chương trình sử dụng Netmiko để tự động hóa cấu hình trên thiết bị Cisco Switch. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết cách sử dụng Netmiko để kết nối SSH, tạo VLAN, đặt địa chỉ IP và kiểm tra cấu hình trên Switch.
Bài viết này đặc biệt hữu ích cho:
✅ Kỹ sư mạng đang làm việc với thiết bị Cisco.
✅ Quản trị viên hệ thống cần tự động hóa quản lý mạng.
✅ Những ai quan tâm đến Network Automation bằng Python.
2. Mô hình Lab
2.1. Mô tả mô hình
3.1. Cài đặt thư viện Netmiko
Mở cmd và nhập các lệnh sau:
Lưu ý: Nếu bạn sử dụng Python 3, có thể dùng lệnh: pip3 install netmiko --user
3.2. Cấu hình SSH trên Switch
- Đặt IP interface vlan 1
- Trên thiết bị Cisco Switch, thực hiện cấu hình cho phép truy cập SSH:
3.3. Viết chương trình Python sử dụng Netmiko
- Mình sẽ dùng phần mềm Vscode, tạo new file python_netmiko.py.
Đầu tiên, từ thư viên Netmiko import ConnectHandler và khai báo thông tin Switch dưới dạng từ điển.
- Tiếp theo, truyền từ điển SW2 vào hàm ConnectHandler và vào mode enable (Vì SW2 có dạng là từ điển nên chúng ta cần truyền vào hàm ConnectHandler dưới dạng **SW2.)
- Tiếp theo, mình tạo vòng lặp for để tạo Vlan từ 10-30:
* Giải thích code:
- Chạy chương trình bằng lệnh:
- Sau khi chạy xong, kiểm tra VLAN trên Switch:
4. Kết luận
Bằng cách sử dụng Netmiko, chúng ta có thể tự động hóa việc cấu hình thiết bị mạng một cách nhanh chóng và chính xác. Việc này không chỉ giúp tiết kiệm thời gian mà còn giảm thiểu rủi ro do lỗi cấu hình thủ công. Đây là một bước tiến quan trọng đối với các kỹ sư mạng trong thời đại Tự động hóa mạng (Network Automation).
Bạn đã thử cách này chưa? Hãy chia sẻ trải nghiệm của bạn dưới phần bình luận! 🚀
✍️Nguyễn Hùng Vĩ | PKT - VnPro
Viết chương trình sử dụng thư viện Netmiko của Python để cấu hình các thiết bị mạng
1. Giới thiệu
Trong lĩnh vực quản trị mạng, việc tự động hóa cấu hình thiết bị là một yếu tố quan trọng giúp tối ưu hóa hiệu suất và đảm bảo tính ổn định của hệ thống. Netmiko, một thư viện Python mạnh mẽ, giúp các kỹ sư mạng, quản trị viên hệ thống và những người quan tâm đến tự động hóa mạng dễ dàng kết nối và thực hiện cấu hình thiết bị qua giao thức SSH.
Vào tháng 3/2025, VnPro đã thực hiện và chạy thử thành công chương trình sử dụng Netmiko để tự động hóa cấu hình trên thiết bị Cisco Switch. Trong bài viết này, chúng tôi sẽ hướng dẫn chi tiết cách sử dụng Netmiko để kết nối SSH, tạo VLAN, đặt địa chỉ IP và kiểm tra cấu hình trên Switch.
Bài viết này đặc biệt hữu ích cho:
✅ Kỹ sư mạng đang làm việc với thiết bị Cisco.
✅ Quản trị viên hệ thống cần tự động hóa quản lý mạng.
✅ Những ai quan tâm đến Network Automation bằng Python.
2. Mô hình Lab
2.1. Mô tả mô hình
- Mô hình gồm một Switch và một PC kết nối với nhau.
- Máy tính cần có Python và thư viện Netmiko được cài đặt.
- Chương trình Python sẽ kết nối SSH đến Switch để thực hiện cấu hình.
- Cấu hình cơ bản trên Switch:
- Đặt hostname, password console, địa chỉ IP.
- Kích hoạt SSH.
- Cài đặt Netmiko trên máy tính.
- Viết chương trình Python để thực hiện:
- Kết nối SSH đến Switch.
- Tạo VLAN từ 10 đến 30.
- Đặt địa chỉ IP cho interface VLAN.
- Kiểm tra kết quả cấu hình.
3.1. Cài đặt thư viện Netmiko
Mở cmd và nhập các lệnh sau:
python -m pip install --upgrade pip
pip install netmiko --user
pip install netmiko --user
Lưu ý: Nếu bạn sử dụng Python 3, có thể dùng lệnh: pip3 install netmiko --user
3.2. Cấu hình SSH trên Switch
- Đặt IP interface vlan 1
Switch#configure terminal
Switch(config)#interface vlan 1
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#no shutdown
Switch(config)#interface vlan 1
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#no shutdown
- Trên thiết bị Cisco Switch, thực hiện cấu hình cho phép truy cập SSH:
Switch#configure terminal
Switch(config)#username vnpro password vnpro#123
Switch(config)#ip domain-name 192.168.1.1
Switch(config)#enable password vnpro#321
Switch(config)#line vty 0 4
Switch(config-line)#password cisco
Switch(config-line)#login
Switch(config-line)#exit
Switch(config)#crypto key generate rsa
1024
Switch(config)#ip ssh version 2
Switch(config)#username vnpro password vnpro#123
Switch(config)#ip domain-name 192.168.1.1
Switch(config)#enable password vnpro#321
Switch(config)#line vty 0 4
Switch(config-line)#password cisco
Switch(config-line)#login
Switch(config-line)#exit
Switch(config)#crypto key generate rsa
1024
Switch(config)#ip ssh version 2
3.3. Viết chương trình Python sử dụng Netmiko
- Mình sẽ dùng phần mềm Vscode, tạo new file python_netmiko.py.
Đầu tiên, từ thư viên Netmiko import ConnectHandler và khai báo thông tin Switch dưới dạng từ điển.
# import hàm ConnectHandler từ thư viên netmiko
from netmiko import ConnectHandler
# Tạo Dict SW bao gồm các thuộc tính như sau
SW2 = {
from netmiko import ConnectHandler
# Tạo Dict SW bao gồm các thuộc tính như sau
SW2 = {
'device_type': 'cisco_ios', # Loại thiết bị
'ip':'192.168.1.1', # Địa chỉ IP
'username': 'vnpro', # Tên đăng nhập
'password': 'vnpro#123', # Mật khẩu
'secret':'vnpro#321' # Mật khẩu enable
'username': 'vnpro', # Tên đăng nhập
'password': 'vnpro#123', # Mật khẩu
'secret':'vnpro#321' # Mật khẩu enable
}
- Tiếp theo, truyền từ điển SW2 vào hàm ConnectHandler và vào mode enable (Vì SW2 có dạng là từ điển nên chúng ta cần truyền vào hàm ConnectHandler dưới dạng **SW2.)
# Kết nối SSH đến Switch
net_connect = ConnectHandler(**SW2)
net_connect.enable()
net_connect = ConnectHandler(**SW2)
net_connect.enable()
- Tiếp theo, mình tạo vòng lặp for để tạo Vlan từ 10-30:
for n in range(10,31):
taoVLAN = ['vlan' + str(n)]
ipVlan = ['int vlan' + str(n), 'ip add 172.16.' +str(n) + '.1 255.255.255.0', 'no shutdown']
net_connect.send_config_set(taoVLAN)
net_connect.send_config_set(ipVlan)
taoVLAN = ['vlan' + str(n)]
ipVlan = ['int vlan' + str(n), 'ip add 172.16.' +str(n) + '.1 255.255.255.0', 'no shutdown']
net_connect.send_config_set(taoVLAN)
net_connect.send_config_set(ipVlan)
* Giải thích code:
- Chúng ta sẽ tạo ra 1 mảng taoVlAN=[‘vlan ‘ + str(n)] trong đó n di chuyển từ 10-30
- Để đặt IP cho interface Vlan ta sử dụng câu lệnh:
- interface vlan 10
- ip add 172.16.10.1 255.255.255.0
- no shutdown
- …
- Interface vlan 30
- ip add 172.16.30.1 255.255.255.0
- no shutdown
- Mình sẽ tạo 1 mảng ipVlan=['int vlan '+str(n),'ip add 172.16.'+str(n)+'.1 255.255.255.0','no shutdown']. Trong đó n chạy từ 10-30.
- Sau đó, gửi 2 mảng taoVLAN và ipVlan bằng send_config_set, in kết quả ra màn hình.
- Để kiểm tra kết quả trên switch ta dùng câu lệnh “sh ip int br | i Vlan” để truyền câu lệnh đó đến Switch ta dùng send_config_command (‘sh ip int brief | i Vlan’)
- Chạy chương trình bằng lệnh:
python python_netmiko.py
- Sau khi chạy xong, kiểm tra VLAN trên Switch:
Switch# show ip int brief | include Vlan
Kết quả mong đợi: VLANs từ 10-30 được tạo tự động với địa chỉ IP tương ứng.
4. Kết luận
Bằng cách sử dụng Netmiko, chúng ta có thể tự động hóa việc cấu hình thiết bị mạng một cách nhanh chóng và chính xác. Việc này không chỉ giúp tiết kiệm thời gian mà còn giảm thiểu rủi ro do lỗi cấu hình thủ công. Đây là một bước tiến quan trọng đối với các kỹ sư mạng trong thời đại Tự động hóa mạng (Network Automation).
Bạn đã thử cách này chưa? Hãy chia sẻ trải nghiệm của bạn dưới phần bình luận! 🚀
✍️Nguyễn Hùng Vĩ | PKT - VnPro