字典型
sw1上
[SW1]user-interface vty 0 4
[SW1-ui-vty0-4]screen-length 0
sw2上
[SW2]user-interface vty 0 4
[SW2-ui-vty0-4]screen-length 0
SW1_info = {"ip_addr":"192.168.100.1",
"username":"dyx",
"passwd":"Huawei@123",
"device_name":"SW1",
"device_type":"交换机"}
SW2_info = {"ip_addr":"192.168.100.2",
"username":"dyx",
"passwd":"Huawei@123",
"device_name":"SW2",
"device_type":"交换机"}
database = [SW1_info, SW2_info]
#display current-configuration 查看当前的配置
#display saved configueation
#display current-configuration | include ip route 命令筛选
import paramiko
import time
from datetime import datetime
from device import *
for i in range(len(database)):
#创建一个SSH客户端
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=database[i]["ip_addr"],username=database[i]["username"],password=database[i]["passwd"])
command = ssh_client.invoke_shell()
#给设备发送“查看配置”命令
command.send("system-view\n"
"user-interface vty 0 4 \n"
"screen-length 0 \n".encode())
command.send("dis cu\n".encode())
time.sleep(3)
recv = command.recv(65535).decode()
#print(recv)
#recv 就是设备给我们返回的结果,但是,如果直接将这个结果写入文件
#文件呈现的效果是,一行结束,会多一个回车
#处理方法:recv这个大文件,通过.splitlines(),将它的每一行进行切割,组成一个列表
#遍历列表,即大文件的每一行,将每一行再写入配置文件即可
resut = recv.splitlines()
#print(resut)
back_time = str(datetime.now())
now_time = back_time[0:-7].replace(":",":")
with open(f"{database[i]['device_name']}-{now_time}.txt",'w')as file_backup:
for item in resut:
print(item)
#将回显内容保存到本地
file_backup.write(item+"\n")
ssh_client.close()
运行后:
查看带时间
在X-shell上
[SW3]user-interface vty 0 4
[SW3-ui-vty0-4]screen-length 0
import paramiko
import time
from datetime import datetime
from datetime import time as time1
ip_addr = "192.168.100.3"
username = "dyx"
passwd = "Huawei@123"
device = "SW3"
#创建一个SSH客户端
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip_addr,username=username,password=passwd)
command = ssh_client.invoke_shell()
#给设备发送“查看配置”命令
command.send("system-view\n"
"user-interface vty 0 4 \n"
"screen-length 0 \n".encode())
command.send("dis cu\n".encode())
time.sleep(3)
recv = command.recv(65535).decode()
resut = recv.splitlines()
#print(resut)
back_time = str(datetime.now())
now_time = back_time[0:-7].replace(":",":")
with open(f"{device}-{now_time}.txt",'w')as file_backup:
for item in resut:
print(item)
#将回显内容保存到本地
file_backup.write(item+"\n")
ssh_client.close()