




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章网络自动化运维学习目标了解Python运维常用库和常用语法;掌握通过Python代码管控网络设备的配置;掌握通过Python代码备份网络设备运行配置应用。网络自动运维实践项目背景项目规划设计项目测试拓扑规划规划表任务1自动化修改网络设备密码的配置任务2定时自动化备份网络设备配置项目需求分析项目实施项目相关知识一、项目背景1、背景1)通过项目10的建设,Jan16公司新建的办公大楼的现有网络架构已经能满足日常办公需求,项目转入运维阶段。为满足运维需求,公司在网管计算机已预装好CentOS7.0,规划通过Python进行网络自动运维,因此对网络管理员部署了如下任务:项目转运维后,公司管理员应马上修改所有网络设备的管理密码;每天凌晨1点对所有网络设备执行一次配置的自动备份。一、项目背景2、Jan16公司网络拓扑二、项目需求分析1、公司实际需求分析1)根据公司实际需求,管理员需要对这批设备的密码进行批量修改,并定期对设备配置做备份。在本项目中,可以在网管计算机上使用Python脚本加载Paramiko模块,然后通过SSH协议批量修改网络设备的登录密码。2)公司还有定期备份配置这样的工作计划性的工作,可以调用网管计算机上的计划任务程序,让计算机按计划执行特定的Python脚本来实现。2、本项目实施具体工作任务分析1)使用Python完成自动化修改网络设备的管理密码;2)使用Python和计划任务完成网络设备的每日备份。三、项目相关知识1、Python模块三、项目相关知识2、网络运维常见Python脚本案例1)案例11-1:通过getpass模块提示用户输入密码并将用户输入的密码赋值给a对象:2)案例11-2:通过time模块暂停执行程序60s:3)案例11-3:通过datetime模块将当前时间赋值给a,以日-月-年时:分的形式回显出来:importgetpassa=getpass.getpass('pleaseinputpassword:')importtimetime.sleep(60)importdatetimeimportdatetimea=datetime.now()print"a.day+"-"+a.month+"-"+a.year+""+a.hour+":"+"a.minute""三、项目相关知识4)案例11-4:通过telnetlib模块的连接IP为的华为网络设备并发送【system-view】命令进入系统视图。其中telnet用户名为admin,密码为Huawei123importtelnetlibip=""user="admin"password="Huawei123"tn=telnetlib.Telnet(ip)tn.read_until("Username:")tn.write(user+"\n")tn.read_until("Password:")tn.write(password+"\n")tn.write("system-view"+"\n")三、项目相关知识5)案例11-5:通过Paramiko模块连接IP为的华为网络设备并发送【system-view】命令进入系统视图。其中SSH用户名为admin,密码为Huawei1234importparamikousername="admin"password="Huawei1234"ip=""ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()command.send("system-view"+"\n")三、项目相关知识6)案例11-6:调用open()相关函数,以读写模式打开名为backup.txt的文件,并写入“abcd”内容后再读取出来:a=open('backup.txt','a+')a.write('abcd')a.close()a.read()四、项目拓扑1、公司网络拓扑规划如下图所示五、规划表所属区域设备类型型号设备命名园区网路由器AR2220R2核心机房路由器AR2220R1三层交换机S5700SW1三层交换机S5700SW2项目管理部二层交换机S3700SW3财务部二层交换机S3700SW4服务器群网管计算机RH2288Manage1、设备规划表五、规划表本端设备本端端口端口配置对端设备对端端口SW2GE0/0/10VLAN90Manageeth0Manageeth0VLAN90SW2GE0/0/102、端口互联规划五、规划表设备命名接口IP地址用途SW1VLANIF100/24设备管理地址SW2VLANIF100/24设备管理地址SW3VLANIF100/24设备管理地址SW4VLANIF100/24设备管理地址Manageeth0DHCP设备管理地址3、IP规划表五、规划表型号设备命名SSH用户名旧密码新密码用户等级VTY认证方式S5700SW1adminHwEdu12#$Jan16@Hw15AAAS5700SW2adminHwEdu12#$Jan16@Hw15AAAS3700SW3adminHwEdu12#$Jan16@Hw15AAAS3700SW4adminHwEdu12#$Jan16@Hw15AAA4、SSH服务规划六、项目实施本次项目中,具体涉及以下工作任务。任务1自动化修改网络设备登录密码的配置,主要在网管计算机上编写Python脚本,实现批量自动更改网络设备的登录密码。任务2定期自动化备份网络设备配置,主要需要运用Python自动化运维的相关知识在网管计算机上编写Python脚本读取网络设备的运行配置并以规划好的文件命名格式(“年-月-日-IP.txt”)保存到/root/backup目录下,并配置系统计划任务程序实现每天凌晨1点自动执行一次。七、任务1自动化修改网络设备密码的配置1、配置过程1)在网管计算机联网状态下安装paramiko;[root@manage~]#curl“https://bootstrap.pypa.io/get-pip.py”-o“get-pip.py”//获取pip安装脚本[root@manage~]#pythonget-pip.py//安装pip工具[root@manage~]#pipinstallparamiko//通过pip安装python第三方模块paramiko七、任务1自动化修改网络设备密码的配置2)编写Python脚本【changepassword.py】,实现对交换机SW1~SW4的密码修改:[root@manage~]#vichangepassword.py##导入paramiko、time、getpass模块importparamikoimporttimeimportgetpass##通过raw_input()函数获取用户输入的SSH用户名并赋值给usernameusername=raw_input('Username:')##通过getpass模块中的getpass()函数获取用户输入字符串作为密码赋值给passwordpassword=getpass.getpass('Password:')##通过foriinrange(1,5)和ip="192.168.100."+str(i)语句实现循环登录交换机SW1-SW4foriinrange(1,5):ip="192.168.100."+str(i)ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()......续下一页......七、任务1自动化修改网络设备密码的配置
......续上一页脚本的内容......##调度交换机命令行执行命令command.send("system-view"+"\n")command.send("aaa"+"\n")command.send("local-useradminpasswordcipherJan16@Hw"+"\n")##更改登录密码结束后,返回用户视图并保存配置command.send("return"+"\n")command.send("save"+"\n")command.send("Y"+"\n")command.send("\n")##暂停2秒,并将命令执行过程赋值给output对象,通过printoutput语句回显内容time.sleep(2)output=command.recv(65535)printoutput##退出SSHssh_client.close()七、任务1自动化修改网络设备密码的配置3)在网管计算机执行脚本【changepassword.py】:[root@manage~]#pythonchangepassword.py
//调度python执行脚本Username:admin
//手动输入SSH用户名,这里是adminPassword://手动输入SSH用户密码,这里是HwEdu12#$七、任务1自动化修改网络设备密码的配置2、任务验证1)在网管计算机查看脚本的回显内容:Info:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1815:12:48.<SW1>system-viewEntersystemview,returnuserviewwithCtrl+Z.[SW1]aaa[SW1-aaa]local-useradminpasswordcipherJan16@Hw[SW1-aaa]return<SW1>saveThecurrentconfigurationwillbewrittentothedevice.Areyousuretocontinue?[Y/N]YNowsavingthecurrentconfigurationtotheslot0.Savetheconfigurationsuccessfully.<SW1>……省略部分内容……七、任务1自动化修改网络设备密码的配置2)在网管计算机使用【sshadmin@】命令重新连接SW1[root@manage~]#sshadmin@admin@‘spassword://这里输入新密码Jan16@HwInfo:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis2.Thecurrentlogintimeis2020-01-1815:15:48.<SW1>八、任务2定时自动化备份网络设备配置1、配置过程1)在网管计算机创建备份交换机运行配置的脚本【backup.py】;[root@manage~]#vibackup.py##导入paramiko、time、datetime等模块importparamikoimporttimefromdatetimeimportdatetime##设置SSH用户名和密码,需要注意这里的密码是新密码username="admin"password="Jan16@Hw"##通过for语句遍历i的值为1/2/3/4,结合ip="192.168.100."+str(i)语句循环SSH登录交换机设备foriinrange(1,5):ip="192.168.100."+str(i)ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()……续下一页内容……八、任务2定时自动化备份网络设备配置
##设置回显内容不分屏显示
command.send("screen-length0temporary"+"\n")##获取交换机运行配置
output=(command.send("displaycurrent-configuration"+"\n"))##程序暂停2秒
time.sleep(2)##读取当前时间
now=datetime.now()##打开备份文件
backup=open("/root/backup/"+str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+ip+".txt","a+")##将查询运行配置的回显内容赋值给recv这个对象
recv=command.recv(65535)##将回显内容写入backup这个对象,相当于写入了备份文件中
backup.write(recv)##关闭打开的文件
backup.close()##结束,断开SSH连接ssh_client.close()八、任务2定时自动化备份网络设备配置2)配置计划任务实现每天凌晨1点自动执行脚本进行备份[root@manage~]#vi/etc/crontab//编辑计划任务配置文件##在文件末尾填入下列内容后退出001***rootpython/root/backup.py[root@manage~]#mkdir/root/backup
//新建/root/backup文件夹[root@manage~]#systemctlrestartcrond//重启crond计划任务服务[root@manage~]#systemctlenablecrond//设置计划任务服务开机自启动八、任务2定时自动化备份网络设备配置2、任务验证1)凌晨1点后在网管计算机上使用【ls-l/root/backup】查看/root/backup目录下的文件。[root@manage~]#ls-l/root/backuptotal28-rw-r--r--.1rootroot2924Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-.txt八、任务2定时自动化备份网络设备配置2)查看设备备份的备份文件,以2020-1-19-.txt为例。[root@manage~]#cat/root/backup/2020-1-19-.txtInfo:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1909:47:04.<SW1>screen-length0temporaryInfo:Theconfigurationtakeseffectonthecurrentuserterminalinterfaceonly.<SW1>displaycurrent-configuration#sysnameSW1#vlanbatch1020100201#stpmoderstpstpinstance0priority4096……省略部分内容……九、项目测试1、在网管计算机使用【sshadmin@】命令重新连接SW1,用户输入新密码才可以正常ssh登录设备[root@manage~]#sshadmin@admin@‘spassword://这里输入新密码Jan16@HwInfo:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis2.Thecurrentlogintimeis2020-01-1815:17:02.<SW1>九、项目测试2、在网管计算机上使用【date-s"00:592020-1-20"】命令修改系统时间为新一天凌晨0点59分,1分钟后再使用【ls-l/root/backup】命令查看/root/backup目录下的文件,将能查看到新一天的备份已经生成。[root@manage~]#date-s"00:592020-1-20"MonJan2000:59CST2020[root@manage~]#ls-l/root/backuptotal56-rw-r--r--.1rootroot2924Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot2924Jan2001:002020-1-20-.txt-rw-r--r--.1rootroot4281Jan2001:002020-1-20-.txt-rw-r--r--.1rootroot4188Jan2001:002020-1-20-.txt-rw-r--r--.1rootroot4238Jan2001:002020-1-20-.txt本章通过公司批量自动更改交换机登录密码和自动备份的需求,展示了Python在网络自动化运维领域的具体应用,通过项目背景、项目需求分析、项目规划设计为子任务做铺垫,将项目实施部分拆分为多个子任务,符合工程项目实施的一般规律。通过对本章的学习,读者应对项目实施流程有一定的了解,同时能掌握Python在网络自动化运维的原理,应能熟练运用Python代码进行自动化、批量的运维操作。下列哪个选项是正确将这个IP赋值给a对象的Python代码()?A.a=B.a=””C.””=aD.”a”=””在下列的选项中哪些不是Python的内建模块()?A.OS模块 B.Telnetlib模块 C.Paramiko模块 D.getpass模块管理员在/etc/crontab计划任务配置文件中写入了如下内容,说法正确的是()?0121**rootpython/root/backup.pyA.计划任务将在每个月的1日2点01分重复执行B.计划任务将在1月的2日的1点被执行C.计划任务将由python用户执行D.计划任务将有root程序执行如下所示是管理员在一个Python脚本中写下的内容,下面说法正确的是()?importparamikopassword="123456"username="admin"ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)A.此时管理员调用的是telnet模块相关代码B.此时管理员提供的用户名为123456,密码为adminC.此时管理员提供的用户名为admin,密码为123456D.如果这是python脚本全部代码,那么管理员执行这些代码将会成功下列哪些Python模块提供了SSH协议连接网络设备的功能()?A.time模块 B.Telnetlib模块 C.Paramiko模块 D.getpass模块实践拓展1.项目背景与要求在各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 志愿者协会管理
- 家电行业资金管理居间协议
- 住宅区景观设计合同模板
- 2024珠海市新思维中等职业学校工作人员招聘考试及答案
- 2024沅江市职业中等专业学校工作人员招聘考试及答案
- 2024清远市新科职业技术学校工作人员招聘考试及答案
- 2024涞源县职业技术教育中心工作人员招聘考试及答案
- 人工智能技术使用授权协议
- 普及宪法知识
- 汽车保险理赔服务合作合同
- 2023年复合型胶粘剂项目安全评价报告
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 【初中+语文】中考语文一轮专题复习+《名著阅读+女性的力量》课件
- 2024年强基计划解读 课件-2024届高三下学期主题班会
- 城市道路桥梁工程施工质量验收规范 DG-TJ08-2152-2014
- 响应面分析软件DesignExpert使用教程
- 《新病历书写规范》课件
- 2024城镇燃气管道非开挖修复更新工程技术规范
- 肠胃消化健康的知识讲座
- 新概念英语第二册-Lesson-56-Faster-than-sound-课件
- 美的社会责任报告2023
评论
0/150
提交评论