一、网络设备文件管理
1、基本概念
①配置文件
网络设备配置文件是命令的集合。
②作用
- 用户将当前配置保存到配置文件中,以便设备重启后,这些配置能够继续生效。
- 通过配置文件,用户可以非常方便地查阅配置信息
- 将配置文件下载到本地设备,以防设备配置文件故障来恢复配置
- 将配置文件上传到别地设备,来实现设备地批量配置
2、格式及规则
配置文件为文本文件,其规则如下:
- 以命令格式保存。
- 为了节省空间,只保存非缺省地参数。
- 以命令视图为基本框架,同一命令视图地命令组织在一起,形成一节,节与节之间通常用空行或注释隔开(以#开始的为注释行)
- 配置文件必须以“.cfg”或者“.zip”作为扩展名,而且必须存放在存储设备的根目录下。
- “.cfg”为纯文本格式,可直接查看其内容。指定为配置文件后,启动时系统对立面的命令逐条进行恢复。
- “.zip”是“.cfg”的压缩格式,占用空间较小。指定为配置文件后,启动时先解压成“.cfg”格式,然后逐条恢复。
- 配置文件中,命令表达式必须是全写,请勿使用缩写
- 配置文件中,每行命令使用“\r\n”换行,禁止使用其他形式不可见字符换行。
- 配置文件传输(上传或下载)时,考虑安全性推荐使用SFTP模式
- 使用display startup命令可以查看到设备本次及下次启动的配置文件。
- 使用display saved-configuration命令可以查看设备下次启动时的配置文件信息。
3、配置文件查询
可以在cli通过执行compara configuration命令来比较当前的配置(包括离线配置)与下次启动的配置文件或指定的配置文件的内容是否一致。
<xxx>compare configuration
Info: The system is now comparing the configuration, please wait......
Warning: The current configuration is not the same as the next startup configuration file. There may be several differences, and the following are some configurations beginning from the first:
====== Current configuration line 44 ======
local-user python password irreversible-cipher $1a$QB'&']X>IF$`e)fHa&sVVc}YwT"tyT6K|C{NNpdZ.PI[kAs4jW5$
local-user python privilege level 15
====== Configuration file line 45 ======
interface Vlanif1
#
interface Vlanif99
ip address 192.168.200.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type access
<xxx>compare configuration ?
INTEGER<0-65535> The line number of current-configuration to begin comparing
STRING<5-48> Specify configuration file to be compared
<cr>
二、Python配置SFTP
1、代码执行输出截图
2、代码执行后输出代码
192.168.200.1login successfully
Info: The max number of VTY users is 10, and the number
of current VTY users on line is 1.
The current login time is 2024-03-06 15:52:34+08:00.
<xxx>screen-length 0 temporary
Info: The configuration takes effect on the current user terminal interface only.
<xxx>sys
Enter system view, return user view with Ctrl+Z.
[xxx]aaa
[xxx-aaa]local-user python password irreversible-cipher python@network
Info: After changing the rights (including the password, access type, FTP directory, HTTP directory, and level) of a local user, the rights of users already online do not change. The change takes effect to users who go online after the change.
[xxx-aaa]local-user python privilege level 15
Warning: This operation may affect online users, are you sure to change the user privilege level ?[Y/N]y
[xxx-aaa]q
[xxx]sftp server enable
Info: The SFTP server is already started.
[xxx]undo ftp server
Info: The FTP server is already disabled.
[xxx]
[Finished in 18.1s]
3、正式Python开通SFTP脚本
import paramiko
import time
# 交换机信息
ip='192.168.200.1'
username='admin'
password='admin@123'
#ssh登录
ssh=paramiko.client.SSHClient()
ssh.set_missing_host_key_policy(paramiko.client.AutoAddPolicy())
ssh.connect(hostname=ip,port=22,username=username,password=password)
print(ip+'login successfully')
# 打开一个channel,输入配置
cli=ssh.invoke_shell()
#cli.send('N\n')
time.sleep(1)
cli.send('screen-length 0 temporary\n')
time.sleep(1)
#进入系统视图
cli.send('sys\n')
time.sleep(1)
#创建用户python
cli.send('aaa\n')
cli.send('local-user python password irreversible-cipher python@network\n')
cli.send('local-user python privilege level 15\n')
cli.send('local-user python service-type ssh\n')
cli.send('q\n')
time.sleep(1)
#开启sftp server
cli.send('sftp server enable\n')
cli.send('undo ftp server\n')
time.sleep(0.5)
#开启用户python的sftp服务及路径
cli.send('ssh user python\n')
cli.send('ssh user python authentication-type all\n')
cli.send('ssh user python service-type sftp\n')
cli.send('ssh user python sftp-directory flash:/\n')
cli.send('save\n')
cli.send('y\n')
#查看脚本交互过程
dis_this=cli.recv(9999999).decode()
print(dis_this)
time.sleep(10)