Nên xem các bài dưới đây trước khi xem bài này:
Sơ đồ lab:
Yêu Cầu:
Dùng thư viện Netmiko SSH vào các route để cấu hình OSPF đảm bảo mạng hội tụ (tất cả các IP sơ đồ có thể ping thấy nhau)
Chuẩn bị:
- Đấu nối interface management: Các interface Et0/0 của tất cả các router nối vào lớp mạng 192.168.0.0/24, lớp mạng này chỉ dùng trong việc quản lý thiết bị, không tham gia vào quá trình định tuyến của các router trong sơ đồ mạng.
- Cấu hình căn bản: trên các router đảm bảo netmiko: 192.168.0.48 có thể ssh vào được các router
Thực hiện:
- Chuẩn bị file cấu hình mẫu:
- R1
- R2
- R3
- R4
interface e0/2
ip address 192.168.14.1 255.255.255.0
no shutdown
exit
interface e0/3
ip address 192.168.13.1 255.255.255.0
no shutdown
exit
interface e0/1
ip address 192.168.123.1 255.255.255.0
no shutdown
exit
interface Lo0
ip address 172.16.1.1 255.255.255.0
no shutdown
exit
!
router ospf 1
router-id 1.1.1.1
exit
!
int rang e0/1 ,e0/3, lo 0
ip ospf 1 are 0
exit
int rang e0/2
ip ospf 1 are 1
exit
end
wri
interface e0/1
ip address 192.168.123.2 255.255.255.0
no shutdown
exit
interface Lo0
ip address 172.16.2.1 255.255.255.0
no shutdown
exit
!
router ospf 1
router-id 2.2.2.2
exit
!
int rang e0/1
ip ospf 1 are 0
exit
int lo 0
ip ospf 1 are 2
exit
end
wri
interface e0/3
ip address 192.168.13.3 255.255.255.0
no shutdown
exit
interface e0/1
ip address 192.168.123.3 255.255.255.0
no shutdown
exit
interface Lo0
ip address 172.16.3.1 255.255.255.0
no shutdown
exit
!
router ospf 1
router-id 3.3.3.3
exit
!
int rang e0/1 ,e0/3, lo 0
ip ospf 1 are 0
exit
end
wri
interface e0/2
ip address 192.168.14.4 255.255.255.0
no shutdown
exit
interface Lo0
ip address 8.8.8.8 255.255.255.0
no shutdown
exit
!
router ospf 1
router-id 4.4.4.4
exit
!
int rang e0/2
ip ospf 1 are 1
exit
int lo 0
ip ospf 1 are 1
exit
end
wri
- Code:
from netmiko import ConnectHandler
'''
Thực hiện import file cấu hình:
- R1.txt vào R1
- R2.txt vào R2
- R3.txt vào R3
- R4.txt vào R4
'''
ios_device = {} # định nghĩa dictionnay rỗng
cfg_device = "R1,R2,R3,R4" # danh sách các Router cần cấu hình
cfg_device = cfg_device.split(",")
def send_config_file(txt):
print(f"Dang ket noi vao IP:'{values[1]}' voi Username: '{values[2]}'")
net_connect = ConnectHandler(**ios_device) # khởi tạo kết nối đến router
output = net_connect.send_config_from_file(txt) # thực hiện import cấu hình vào router
print(f"Da import file cau hinh:'{txt}' OSPF vao IP: '{values[1]}' thanh cong!")
print("-" * 80)
#print(txt)
with open ("device_listOSPF.csv","r") as rfile:
keys = rfile.readline().split(",")
values = rfile.read()
x = 0 # khởi tạo biến đếm
for values in values.splitlines():
values = values.split(",")
for i in range(1,len(keys)-1,1):
ios_device[keys[i]] = values[i]
send_config_file(cfg_device[x] + ".txt")
x += 1
- Kết quả:
C:\python>python Demo.pyDang ket noi vao IP:'192.168.0.1' voi Username: 'admin'Da import file cau hinh:'R1.txt' OSPF vao IP: '192.168.0.1' thanh cong!--------------------------------------------------------------------------------Dang ket noi vao IP:'192.168.0.2' voi Username: 'admin'Da import file cau hinh:'R2.txt' OSPF vao IP: '192.168.0.2' thanh cong!--------------------------------------------------------------------------------Dang ket noi vao IP:'192.168.0.3' voi Username: 'admin'Da import file cau hinh:'R3.txt' OSPF vao IP: '192.168.0.3' thanh cong!--------------------------------------------------------------------------------Dang ket noi vao IP:'192.168.0.4' voi Username: 'admin'Da import file cau hinh:'R4.txt' OSPF vao IP: '192.168.0.4' thanh cong!--------------------------------------------------------------------------------[Finished in 32.6s]
Xong!
- net_connect.send_command() - Send command down the channel, return output back (pattern based)
- net_connect.send_command_timing() - Send command down the channel, return output back (timing based)
- net_connect.send_config_set() - Send configuration commands to remote device
- net_connect.send_config_from_file() - Send configuration commands loaded from a file
- net_connect.save_config() - Save the running-config to the startup-config
- net_connect.enable() - Enter enable mode
- net_connect.find_prompt() - Return the current router prompt
- net_connect.commit() - Execute a commit action on Juniper and IOS-XR
- net_connect.disconnect() - Close the connection
- net_connect.write_channel() - Low-level write of the channel
- net_connect.read_channel() - Low-level write of the channel
No comments:
Post a Comment