首页 文章 精选 留言 我的

精选列表

搜索[华为鸿蒙],共9932篇文章
优秀的个人博客,低调大师

【NetDevOps】paramiko - 自动化备份华为设备配置文件

拓扑图 前置工作 路由器、交换机基础配置 1.交换机、路由器配置ssh server 用户名:admin 密码:admin123 2.PC上安装python3, 并使用pip安装paramiko模块 pip3 install paramiko PC上运行ftp服务器;这里使用centos7,运行vsftpd服务,ip地址为192.168.164.133 。 1. 安装vsftpd服务 yum install -y vsftpd 2. 启动vsftpd服务 systemctl start vsftpd 服务开启后,进行连接测试,使用本地用户admin进行连接 语法:ftp 192.168.164.133 在交换机上查看配置文件信息 命令:dirvrpcfg.zip 文件就是我们需要的配置文件 手动上传配置文件测试 先登录到ftp服务器使用put命令上传配置文件,语法:put vrpcfg.zip 在centos7查看,配置文件接收情况可以修改文件名和存放目录,后面我们在脚本里做这个工作。 脚本 在Linux中创建脚本paramiko_ftp.py ,将ip地址信息写在 iphost.txt 文件中,放在脚本同目录 import paramiko import time import getpass import os #输入SSH登录信息 username=input('user:') password=getpass.getpass('password:') #打开ip列表文件 iphost=open('iphost.txt','r') #创建两个空列表,用于后面存放出现连接超时错误和登录信息错误的设备信息 timeout_list=[] auth_error_list=[] #检查以当前日期命名的文件夹是否存在,不存在就创建 Day = time.strftime('%Y-%m-%d',time.gmtime()) if os.path.exists('/home/admin/'+str(Day)+'/') is not True: os.mkdir('/home/admin/'+str(Day)+'/') #用for循环读取ip列表 for line in iphost.readlines(): #去除头尾的空格、换行符 ip=line.strip() #try内写正常执行的语句 try: #调用paramiko的SSHClient()方法,赋予变量ssh ssh=paramiko.SSHClient() #自动接受来自未保存主机的密钥 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #调用connect()方法进行ssh登录 ssh.connect(hostname=ip,username=username,password=password) #打印连接成功信息 print('已连接'+ip) #调用paramiko.SSHClient()的connect()方法,唤醒shell,赋值给变量command command=ssh.invoke_shell() #调用invoke_shell()的send()函数,向设备发送指令 command.send('ftp 192.168.164.133 \n') command.send('admin\n') #这里是ftp用户名,注意末尾不要有空格 command.send('admin\n') #ftp的密码,用的是linux的本地用户登录信息 time.sleep(2) #休眠2s,等待ftp连接 command.send('put vrpcfg.zip \n') #put命令,上传配置文件 command.send('quit \n') #修改配置文件在Linux的保存目录和文件名 os.rename(src='/home/admin/vrpcfg.zip',dst='/home/admin/'+str(Day)+'/'+'hw'+str(ip[8:])+'-vrpcfg.zip') #调用time模块sleep()函数,手动休眠1s,目的是等待设备回显内容输出,方便后面打印完整回显内容 time.sleep(1) #调用invoke_shell()的recv()函数,截取回显结果,一次最多65535字符 output=command.recv(65535) #打印回显结果,用utf-8解码 print(output.decode('utf-8')) #错误类型一,账号密码认证失败;打印并在列表中增加连接失败的ip地址 except paramiko.ssh_exception.AuthenticationException: print('认证失败',ip) auth_error_list.append(ip) #错误类型二,连接超时;打印并在列表中增加连接失败的ip地址 except TimeoutError: print('连接超时',ip) timeout_list.append(ip) #关闭ip列表文件 iphost.close() #调用paramiko.SSHClient()的close方法,退出ssh连接 ssh.close #如果列表不为空,打印出来连接失败的设备 if timeout_list: print('以下设备连接超时:') for i in timeout_list: print(i) if auth_error_list: print('以下设备认证失败:') for i in auth_error_list: print(i) 运行脚本python3 paramiko_ftp.py Linux终端 上传成功的回显信息示例在Linux上检查配置文件保存情况后续可以用 crontab -e 命令,添加定时任务,定时自动备份文件 参考:书籍: 网络工程师python之路知乎专栏: 弈心 - 网路行者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册