Nên xem các bài dưới đây trước khi xem bài này:
- Cài đặt python tại đây
- Dictionnary trong python tại đây
- Import thư viện tại đây
- Cách cấu hình ssh tại đây
- Cách cài đặt TFTP server tại đây
- Cách xử lý file tại đây
- Loop if tại đây
- Netmiko basic tại đây
- Backup multi vendor, mutil device tại đây
Sơ đồ lab:
Yêu cầu:
Dùng thư viện netmiko để SSH vào và thực hiện backup cấu vlan trên switch
Sw:
enableconf thostname Sw1ip domain name netmiko.labusername admin privilege 15 password admin1234@sw1line vty 0 4login localtransport input sshcrypto key generate rsa general-keys modulus 1024ip ssh version 2interface vlan 1no shutdownip address 192.168.0.8 255.255.255.0exitvlan 10-20do wri
Thực hiện:
from netmiko import ConnectHandler
from datetime import datetime
bk_device = {
"host":"192.168.0.8",
"username":"admin",
"password":"admin1234@sw1",
"device_type":"cisco_ios"
}
tftpserver = "192.168.0.48"
def cisco_ios_sw(txt): # định nghĩa hàm backup VLAN cho switch cisco ios
cmd = "copy vlan.dat tftp:"
filename = txt + "vlan.dat"
net_connect = ConnectHandler(**bk_device)
output = net_connect.send_command_timing(cmd)
if "Address or name of remote host []" in output:
output += net_connect.send_command_timing(tftpserver)
if "Destination filename" in output:
output += net_connect.send_command_timing(filename)
print(output)
print("-" * 80)
print(f"Dang ket noi vao IP:'{bk_device['host']}' voi Username: '{bk_device['username']}'")
now = datetime.now().strftime("%Y-%b-%d_%H%M%S")
filename = now + "_" + bk_device["device_type"] + "_" + bk_device["host"]
cisco_ios_sw(filename)
- Kết quả:
C:\python>python Demo.py
Dang ket noi vao IP:'192.168.0.8' voi Username: 'admin'
Address or name of remote host []? Destination filename [vlan.dat]? !!
2076 bytes copied in 0.025 secs (83040 bytes/sec)
--------------------------------------------------------------------------------
C:\python>
Xong!