Sơ đồ mạng bài lab.
Bước 1: Cài đặt thư viện Netmiko.
Từ PC bấm tổ hợp phím Windows + R, cmd (yêu cầu internet)
Nâng cấp thư viện Pip:
Cài đặt thư viện Netmiko:
(pip3 install netmiko - -user đối với Python 3)
Kết quả:
Bước 2 : Kết nối và cấu hình cơ bản và SSH cho thiết bị.
a) Cấu hình Router
Switch#configure terminal
Switch(config)#hostname R1
R1 (config)# int e0/0
R1(config-if)# ip address dhcp
R1(config-if)# no shutdown
R1(config-if)#exitR1#configure terminal
R1 (config)#username admin password cisco
R1 (config)#ip domain-name vnpro.org
R1 (config)#enable password vnpro
R1 (config)#line vty 0 4
R1 (config-line)# login local
R1 (config-line)# transport input ssh
R1 (config-line)#exit
R1 (config)#ip ssh version 2
R1 (config)#crypto key generate rsa
1024b) Cấu hình Switch
Switch#configure terminal
Switch(config)#hostname SW1
SW1 (config)# int e0/0
SW1 (config-if)# no switchport
SW1 (config-if)# ip address dhcp
SW1 (config-if)# no shutdown
SW1 (config-if)#exit
SW1 #configure terminal
SW1 (config)#username admin password cisco
SW1 (config)#ip domain-name vnpro.org
SW1 (config)#enable password vnpro
SW1 (config)#line vty 0 4
SW1 (config-line)# login local
SW1 (config-line)# transport input ssh
SW1 (config-line)#exit
SW1 (config)#ip ssh version 2
SW1 (config)#crypto key generate rsa
1024Bước 4 : Viết chương trình Python.
a) Chương trình Python cho Router tạo loopback
Vào phần mềm Visual Studio Code, tạo new file Netmiko.py và save mục bài làm C:\python
Đầu tiền, từ thư viên Netmiko import ConnectHandler và khai báo thông tin Router dưới dạng dict.
from netmiko import ConnectHandler #import hàm ConnectHandler từ thư viện Netmiko
R1 = { #Tạo Dict R1 bao gồm các thuộc tính như sau
'device_type':'cisco_ios’, #device_type nếu dùng thiết bị Cisco để cisco_ios
'ip':'10.215.26.252', #ip của R1 khi được cấp dhcp
'username':'admin', #username là tên truy cập SSH vào R1
'password':’cisco’, #password là password truy cập SSH vào R1
'secret':'vnpro', #secret là enable password của R1
}Lưu ý: các thuộc tính trên phải để chính xác như trên
Tiếp theo, truyền thư viện(dict) R1 vào hàm ConnectHandler và vào mode enable
net_connect = ConnectHandler(**R1) #tạo kết nối đến R1
net_connect.enable() #tạo kết nối vào mode enableVì R1 có dạng là thư viên(dict) nên chúng ta cần truyền vào hàm ConnectHandler dưới dạng **R1.
Dùng vòng lặp For để ta tạo ra 5 loopback cùng 1 lúc trên Router.
for n in range (1,6):
output = net_connect.send_config_set(
[f'int lo{i}', #dòng lệnh tạo loopback
f'ip add 192.168.{i}.1 255.255.255.0 '] #đặt ip cho loopback
#để có thể chạy ta cần phải ép kiểu I bằng cách thêm f trước câu lệnh.
)
print(output)Sau khi chạy kết quả sẻ hiển thị như sau:
Để kiểm tra xem mình đã tạo được các loopback chưa:
out = net_connect.send_command('show ip int bri')
print(out)Kết quả:
b) Chương trình Python cho Router tạo vlan
Để tạo vlan trên switch ta sử dụng câu lệnh:
Cũng tương tự như Router ta phải khai báo thông tín Switch dưới dạng dict
from netmiko import ConnectHandler #import hàm ConnectHandler từ thư viện Netmiko
SW1 = { #Tạo Dict SW1 bao gồm các thuộc tính như sau
'device_type':'cisco_ios’, #device_type nếu dùng thiết bị Cisco để cisco_ios
'ip':'10.215.26.249', #ip của SW1 khi được cấp dhcp
'username':'admin', #username là tên truy cập SSH vào SW1
'password':’cisco’, #password là password truy cập SSH vào SW1
'secret':'vnpro', #secret là enable password của SW1
}net_connect = ConnectHandler(**SW1) #tạo kết nối đến SW1
net_connect.enable() #tạo kết nối vào mode enableDùng dòng for để tạo 5 vlan cho switch.
tenvlan = ['kythuat','kinhdoanh','ketoan','giamdoc','nhansu']
dem = 10
for i in tenvlan:
output = net_connect.send_config_set([f"vlan {dem}",f"name {i}"])
print(output)
dem+=10Kết quả sẽ hiển thị khi tạo vlan:
Để 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 br | i Vlan’)
out = net_connect.send_command('show vlan')
print(out)File Netmiko_router.py của chúng ta sẽ như sau:
from netmiko import ConnectHandler
R2 = {
'device_type':"cisco_ios",
"ip": "10.215.26.252",
'username':"cisco",
'password':'cisco',
'secret':'vnpro'
}
net_connect= ConnectHandler(**R2)
print(net_connect.enable())
for i in range(1,6):
output = net_connect.send_config_set([f'int lo{i}', f'ip add 192.168.{i}.1 255.255.255.0 '])
print(output)
out = net_connect.send_command('show ip int bri')
print(out)
File Netmiko_Switch.py của chúng ta sẽ như sau:
from netmiko import ConnectHandler
SW1 = {
'device_type':"cisco_ios",
"ip": "10.215.26.254",
'username':"cisco",
'password':'cisco',
'secret':'vnpro'
}
net_connect= ConnectHandler(**SW1)
print(net_connect.enable())
tenvlan = ['kythuat','kinhdoanh','ketoan','giamdoc','nhansu']
dem = 10
for i in tenvlan:
output = net_connect.send_config_set([f"vlan {dem}",f"name {i}"])
print(output)
dem+=10
out = net_connect.send_command('show vlan')
print(out)