NetOps-Python实现网络设备SFTP配置

一、网络设备文件管理

1、基本概念

①配置文件

网络设备配置文件是命令的集合。

②作用

  1. 用户将当前配置保存到配置文件中,以便设备重启后,这些配置能够继续生效。
  2. 通过配置文件,用户可以非常方便地查阅配置信息
  3. 将配置文件下载到本地设备,以防设备配置文件故障来恢复配置
  4. 将配置文件上传到别地设备,来实现设备地批量配置

2、格式及规则

配置文件为文本文件,其规则如下:

  1. 以命令格式保存。
  2. 为了节省空间,只保存非缺省地参数。
  3. 以命令视图为基本框架,同一命令视图地命令组织在一起,形成一节,节与节之间通常用空行或注释隔开(#开始的为注释行
  4. 配置文件必须以“.cfg”或者“.zip”作为扩展名,而且必须存放在存储设备的根目录下。
  5. .cfg”为纯文本格式,可直接查看其内容。指定为配置文件后,启动时系统对立面的命令逐条进行恢复。
  6. “.zip”是“.cfg”的压缩格式,占用空间较小。指定为配置文件后,启动时先解压成“.cfg”格式,然后逐条恢复。
  7. 配置文件中,命令表达式必须是全写,请勿使用缩写
  8. 配置文件中,每行命令使用“\r\n”换行,禁止使用其他形式不可见字符换行。
  9. 配置文件传输(上传或下载)时,考虑安全性推荐使用SFTP模式
  10. 使用display startup命令可以查看到设备本次及下次启动的配置文件。
  11. 使用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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433968.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【DevSecOps】你的应用真的安全吗?

【DevSecOps】你的应用真的安全吗? 由于当今一切都运行在云计算上,并依靠互连系统来提供尖端的业务服务,以满足客户永无止境的需求,因此企业需要采用最先进的技术来保持活力也就不足为奇了,以此来领先于他们的竞争对手。 这种需求不仅需要创新服务,还需要快速开发和更快…

腾讯云服务器CVM_云主机_云计算服务器_弹性云服务器

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

OPENWRT本地局域网模拟域名多IP

本地配置MINIO服务时&#xff0c;会遇到域名多IP的需求。当某一个节点失效时&#xff0c;可以通过域名访问平滑过渡到其它的节点继续服务。 【MINIO搭建过程略】 搭建完毕后&#xff0c;有4个节点&#xff0c;对应的docker搭建命令&#xff1a; docker run --nethost --rest…

通过vue ui创建项目

确认前端环境都安装好之后 打开黑窗口 输入 vue ui 会打开一个vue的网页 在此创建项目 可以选择在那个路径创建 这是我的项目配置 这里是选择vue版本 我要用的是vue2 选好点击创建项目就好了 创建好后的重点的目录结构以及结构的作用 启动前端工程 将创建好的项目导入编译器 我…

141.乐理基础-男声女声音域、模唱、记谱与实际音高等若干问题说明

上一个内容&#xff1a;140.乐理基础-音程的转位-CSDN博客 上一个内容练习的答案&#xff1a;红色箭头指向的是转为&#xff0c;比如第一个只要写成c低g高都是正确的&#xff0c;不一定非要和图中一样 首先在 12.音域、1C到底是那一组的C 里面写了人声的音域&#xff0c;大致默…

Sui推出项目提案申请RFP计划资助开发者

近日&#xff0c;Sui推出了对其资助分配流程的重大改进&#xff1a;引入了项目提案申请&#xff08;Request for Proposals&#xff0c;RFP&#xff09;计划。这个新计划扩展了支持增长Sui生态创新项目的途径&#xff0c;是Sui资助计划的重大发展。 为什么要采用RFP流程&#…

uniapp封装统一请求(get和post)

uniapp封装请求 request.js文件 import Vue from vue // 全局配置 import settings from ./settings.js function computedBaseUrl(url) {// console.log(url);return (url.indexOf(http) -1 ? settings.baseUrl : ) url }// 发送请求 export default (options) > {const…

SpringBoot中集成LiteFlow(轻量、快速、稳定可编排的组件式规则引擎)实现复杂业务解耦、动态编排、高可扩展

场景 在业务开发中&#xff0c;经常遇到一些串行或者并行的业务流程问题&#xff0c;而业务之间不必存在相关性。 使用策略和模板模式的结合可以解决这个问题&#xff0c;但是使用编码的方式会使得文件太多, 在业务的部分环节可以这样操作&#xff0c;在项目角度就无法一眼洞…

【教程】无法验证app需要互联网连接以验证是否信任开发者

摘要 本文将探讨在使用苹果App时遇到无法验证开发者的情况&#xff0c;以及用户可以采取的解决方案。通过检查网络连接、重新操作、验证描述文件等方式来解决无法验证开发者的问题。同时&#xff0c;还介绍了开发者信任设置的步骤&#xff0c;以及使用appuploader工具进行安装…

VMware虚拟机使用Windows共享的文件夹

虚拟机版本为 VMware Workstation 16 Pro:16.2.4&#xff1b;主机位Windows11&#xff1b;记录于2024-03-05   在个人使用时&#xff0c;经常会有一些数据集等大文件重复在不同实验中使用&#xff0c;但是不同系统中来回使用会导致占用虚拟机空间&#xff0c;该博文通过将主机…

蓝桥杯倒计时 38 天

整数二分模板&#xff1a;数的范围 二分的本质不是单调性&#xff0c;而是二分出能满足某种性质使得将整数分成两半。 思考&#xff1a;模板题&#xff0c;模板记熟就能做 #include<iostream> using namespace std; int n,q; const int N 1e510; int a[N]; int main…

【C#】WPF窗体在同一个位置实现不同页面切换

关键代码看主界面代码即可 创建View文件夹&#xff0c;并创建用户控件 用户控件代码 UserControl1.xaml <UserControl x:Class"WpfApp15.View.UserControl1"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://s…

从0开始学习NEON(2)

1、前言 继上一个例子&#xff0c;本次继续来学习NEON&#xff0c;本次学习NEON中向量拼接的操作&#xff0c;主要应用在图像的padding中。 https://blog.csdn.net/weixin_42108183/article/details/136440707 2、案例 2.1 案例1 在某些情况下&#xff0c;需要取在每个向量…

9.11一和零(LC474-M)

算法&#xff1a; 本题中strs 数组里的元素就是物品&#xff0c;每个物品都是一个&#xff01; 而m 和 n相当于是一个背包&#xff0c;两个维度的背包。 理解成多重背包的同学主要是把m和n混淆为物品了&#xff0c;感觉这是不同数量的物品&#xff0c;所以以为是多重背包。 …

IO之文件的打开操作和关闭

Linux下一切皆文件 一、文件的分类 学习链接&#xff1a;【精选】7种文件类型3种查看文件属性扩展名_七种文件类型-CSDN博客 二、对标准IO文件的相关操作 1、打开 &#xff08;1&#xff09;open--打开普通文件 如果需要别的权限&#xff0c;要使用 | 形式拼装 O_EXCL &…

HQYJ 2024-3-6 作业

创建一个伪终端 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <wait.h> void getstring(char *buf,int si…

【JavaWeb】Tomacat部署Web项目

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍【JavaWeb】Tomacat部署Web项目的详细使用以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题…

Linux系统之rename命令的基本使用

Linux系统之rename命令的基本使用 一、rename命令介绍二、raname工具版本2.1 C语言版本2.2 Perl版本 三、centos下的rename使用3.1 基本语法3.2 命令选项3.3 rename的基本使用 四、ubuntu下的rename使用4.1 基本语法4.2 命令选项4.3 rename命令的基本操作 五、rename注意事项 一…

双体系Java学习之全路线图

Java路线图 此路线图是为了我以后的Java学习指明方向。 希望大家都能在Java的路线上越走越远&#xff01;努力学习&#xff01;&#xff01;

javaSwing飞机大战

概述 1.1 项目简介 本次Java课程设计是做一个飞机大战的游戏&#xff0c;应用Swing编程&#xff0c;完成一个界面简洁流畅、游戏方式简单&#xff0c;玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是Swing编程中的一些窗口类库、事件监听以及贴图技术。 1.2 实…