Nên đọc 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 xử lý file tại đây
- Loop if tại đây
- Lab netmiko Căn bản tại đây
2. Kiểm tra xem R_1 có bao nhiêu interface ở trạng thái up
- Chuẩn bị:
Cấu hình trên R_1:
enableconf thostname R_1ip domain name netmiko.labusername admin privilege 15 password admin1234line vty 0 4login localtransport input sshcrypto key generate rsa general-keys modulus 1024ip ssh version 2interface Ethernet0/0no shutdownip address 192.168.0.1 255.255.255.0exitinterface Ethernet0/1no shutdownip address 172.16.100.1 255.255.255.0exitinterface Ethernet0/2no shutdownip address 172.16.200.1 255.255.255.0exitdo wri
- Netmiko:
import netmiko # import thư viện netmiko
# định nghĩa dictionnary với các tham số đã cấu hình trong phần chuẩn bị
R_1 = {
"host":"192.168.0.1",
"username":"admin",
"password":"admin1234",
"device_type":"cisco_ios"
}
# dùng hàm ConnectHandler trong thư viện netmiko để kết nối với R_1 với các thông tin đã định nghĩa trong dictionnary
net_connect = netmiko.ConnectHandler(**R_1)
show_arp = net_connect.send_command("show arp") # thực hiện lênh show arp
print (show_arp)
C:\python>python Demo.pyProtocol Address Age (min) Hardware Addr Type InterfaceInternet 172.16.100.1 - aabb.cc00.1010 ARPA Ethernet0/1Internet 172.16.200.1 - aabb.cc00.1020 ARPA Ethernet0/2Internet 192.168.0.1 - aabb.cc00.1000 ARPA Ethernet0/0Internet 192.168.0.48 0 94de.80a6.fb30 ARPA Ethernet0/0C:\python>
2. Kiểm tra xem R_1 có bao nhiêu interface ở trạng thái up
from netmiko import ConnectHandler # cách import này chúng ta có thể gọi hàm ConnectHandler trực tiếp
R_1 = {
"host":"192.168.0.1",
"username":"admin",
"password":"admin1234",
"device_type":"cisco_ios"
}
# gọi hàm ConnectHandler trực tiếp
net_connect = ConnectHandler(**R_1)
output = net_connect.send_command("show ip int brief") # thực hiện lênh show ip int brief
dem = 0 # khởi tạo biến đếm
for line in output.splitlines():
if "Interface" in line: # bỏ dòng đầu tiên
continue
elif "up" in line: # nếu trạng thái up thì
dem += 1 # tăng lên 1
print("So interface UP cua thiet bi la:",dem)
C:\python>python Demo.pySo interface UP cua thiet bi la: 3C:\python>
from netmiko import ConnectHandler # cách import này chúng ta có thể gọi hàm ConnectHandler trực tiếp
import os # thư viện để lấy đường dẫn hiện tại
R_1 = {
"host":"192.168.0.1",
"username":"admin",
"password":"admin1234",
"device_type":"cisco_ios"
}
# gọi hàm ConnectHandler trực tiếp
net_connect = ConnectHandler(**R_1)
output = net_connect.send_command("show ip int brief") # thực hiện lênh show ip int brief
path = os.getcwd() # lấy đường dẫn hiện tại gán vào biến path
filename = "int_down.txt"
int_status = "down"
dem = 0 # khởi tạo biến đếm
for line in output.splitlines():
if "Interface" in line: # bỏ dòng đầu tiên
continue
elif int_status in line: # nếu trạng thái down thì
with open (filename,"a") as afile: # ghi file append/ghi vào cuối file
afile.write(line)
dem += 1 # tăng lên 1
print("So interface DOWN cua thiet bi la:",dem)
print("Thong tin duoc luu vao file '{}' duong dan la '{}'".format(filename,path))
C:\python>python Demo.pySo interface DOWN cua thiet bi la: 5Thong tin duoc luu vao file 'int_down.txt' duong dan la 'C:\python'C:\python>
- 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