




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章网络自动化运维第页学习目标第页了解Python运维常用库和常用语法;掌握通过Python代码管控网络设备的配置;掌握通过Python代码备份网络设备运行配置应用。目录项目背景和需求分析项目背景项目需求分析项目相关知识项目规划设计项目实施项目测试第页11.1.1
项目背景第页1、背景通过项目10的建设,Jan16公司新建的办公大楼的现有网络架构已经能满足日常办公需求,项目转入运维阶段。为满足运维需求,公司在网管计算机已预装好CentOS
7.0,规划通过Python进行网络自动运维,因此对网络管理员部署了如下任务:项目转运维后,公司管理员应马上修改所有网络设备的管理密码;每天凌晨1点对所有网络设备执行一次配置的自动备份。11.1.1
项目背景2、Jan16公司网络拓扑第页11.1.2
项目需求分析第页1、公司实际需求分析根据公司实际需求,管理员需要对这批设备的密码进行批量修改,并定期对设备配置做备份。在本项目中,可以在网管计算机上使用Python脚本加载Paramiko模块,然后通过SSH协议批量修改网络设备的登录密码。公司还有定期备份配置这样的工作计划性的工作,可以调用网管计算机上的计划任务程序,让计算机按计划执行特定的Python脚本来实现。2、本项目实施具体工作任务分析使用Python完成自动化修改网络设备的管理密码;使用Python和计划任务完成网络设备的每日备份。目录项目背景和需求分析项目相关知识项目规划设计项目实施项目测试第页在Python中,模块可以通俗的理解为独立保存好的脚本,它可以通过【import
module-name】语句来导入,module-name则代表模块的名称。模块分为Python内建模块和第三方模块,Python内建模块可以直接通过【import
module-name】语句导入。第三方模块可以通过【pip
installmodule-name】终端命令安装后再通过【import
module-name】语句导入后使用。在网络运维中常用的Python内建模块有os、time、getpass、datetime、re、Telnetlib等,常用的Python第三方模块有Paramiko,Netmiko等。11.2
项目相关知识第页1、Python模块getpass模块是Python的内建模块之一,它在Python中主要是提供Python的交互式功能,在网络运维中,可以用于提示用户输入密码,通过getpass输入的密码是不可见的,安全性相对较高。time和datetime模块是python的内建模块之一,它们在Python中主要提供时间相关的功能。time模块可以在网络运维中提供时间戳、格式化时间、时间元组等功能。而datetime模块则重新封装了time模块,它能提供更多功能,如日期、时区等。11.2
项目相关知识第页2、网络运维常见Python脚本案例1)案例11-1:通过getpass模块提示用户输入密码并将用户输入的密码赋值给a对象:2)案例11-2:通过time模块暂停执行程序60s:3)案例11-3:通过datetime模块将当前时间赋值给a,以日-月-年时:分的形式回显出来:import
getpassa=getpass.getpass("please
input
password:")import
timetime.sleep(60)import
datetime
import
datetimea=datetime.now()print
"a.day
+"-"+a.month+"-"+a.year+"
"+a.hour+":"+"a.minute""telnetlib模块主要是支持Python通过telnet协议远程连接设备。它是Python中的内建模块,使用时直接导入即可,无需额外安装,但其在数据传输过程中存在一些安全性问题(如不支持密文传输),因此不太建议在生产网络中使用。11.2
项目相关知识第页4)案例11-4:通过telnetlib模块的连接IP为192.168.1.1的华为网络设备并发送【system-view】命令进入系统视图。其中telnet用户名为admin,密码为Huawei123import
telnetlibip="192.168.1.1"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")在Python中,安装并导入paramiko模块后可以通过代码实现SSH协议远程连接设备。具有同样效用的模块还有netmiko。netmiko模块主要是在paramiko的基础上进行了优化,如增加厂商支持、增加命令补全功能等11.2
项目相关知识5)案例11-5:通过Paramiko模块连接IP为192.168.1.1的华为网络设备并发送【system-view】命令进入系统视图。其中SSH用户名为admin,密码为Huawei1234import
paramikousername
="admin"password
="Huawei1234"ip="192.168.1.1"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")第页在日常的网络运维中,网络工程师也是需要文本文件配合工作,如用于批量配置网络设备的命令模板文件,存放所有网络设备IP地址、备份网络设备运行配置信息命令【display
current-configuration】输出的结果等等,Python的内建模块os模块可以实现以上功能,常用的os模块中的函数有open()函数,其使用的代码格式一般为【open(‘filename’,‘type’)】,其中filename代表文件名,type代表文件的读写模式,可以为r(只读)、w(写入)、a(追加)、r+(读写)、w+(覆盖读写)等。11.2
项目相关知识第页6)案例11-6:调用open()相关函数,以读写模式打开名为backup.txt的文件,并写入“abcd”内容后再读取出来:a=open("backup.txt","a+")a.write("abcd")a.close()a.read()目录项目背景和需求分析项目相关知识项目规划设计项目拓扑规划项目规划表项目实施项目测试第页11.3.1
项目拓扑规划1、公司网络拓扑规划如下图所示第页11.3.2
项目规划表第页园区网路由器AR2220R2核心机房路由器AR2220R1三层交换机S5700SW1三层交换机S5700SW2项目管理部二层交换机S3700SW3财务部二层交换机S3700SW4服务器群网管计算机RH2288Manage所属区域设备类型型号设备命名1、设备规划表11.3.2
项目规划表第页SW2GE0/0/10VLAN90Manageeth0Manageeth0VLAN90SW2GE0/0/10本端设备本端端口端口配置对端设备对端端口2、端口互联规划11.3.2
项目规划表第页SW1VLANIF
100192.168.100.1/24设备管理地址SW2VLANIF
100192.168.100.2/24设备管理地址SW3VLANIF
100192.168.100.3/24设备管理地址SW4VLANIF
100192.168.100.4/24设备管理地址Manageeth0DHCP设备管理地址设备命名接口IP地址用途3、IP规划表11.3.2
项目规划表第页S5700SW1adminHwEdu12#$Jan16@Hw15AAAS5700SW2adminHwEdu12#$Jan16@Hw15AAAS3700SW3adminHwEdu12#$Jan16@Hw15AAAS3700SW4adminHwEdu12#$Jan16@Hw15AAA4、SSH服务规划型号 设备命名SSH用户名旧密码新密码用户等级VTY认证方式目录项目背景和需求分析项目相关知识项目规划设计项目实施任务1自动化修改网络设备密码配置任务2定时自动化备份网络设备配置11.5
项目测试第页11.4
项目实施第页本次项目中,具体涉及以下工作任务。任务1自动化修改网络设备登录密码的配置,主要在网管计算机上编写Python脚本,实现批量自动更改网络设备的登录密码。任务2定期自动化备份网络设备配置,主要需要运用Python自动化运维的相关知识在网管计算机上编写Python脚本读取网络设备的运行配置并以规划好的文件命名格式(“年-月-日-IP.txt”)保存到/root/backup目录下,并配置系统计划任务程序实现每天凌晨1点自动执行一次。11.4.1
任务1
自动化修改网络设备密码配置1、配置过程1)在网管计算机联网状态下安装Python3和paramiko;[root@manage
~]#yum
install-y
python3[root@manage
~]#
pip3
install
paramiko第页//安装Python3和相应依赖工具//通过pip安装python第三方模块paramiko11.4.1
任务1
自动化修改网络设备密码配置2)编写Python脚本【changepassword.py】,实现对交换机SW1~SW4的密码修改:[root@manage
~]#vi
changepassword.py##导入paramiko、time、getpass模块import
paramikoimport
timeimport
getpass##通过raw_input()函数获取用户输入的SSH用户名并赋值给usernameusername=input("Username:")##通过getpass模块中的getpass()函数获取用户输入字符串作为密码赋值给passwordpassword
=
getpass.getpass(prompt="Password:",stream=None)##通过for
i
in
range(1,5)和ip="192.168.100."+str(i)语句实现循环登录交换机SW1-SW4for
i
in
range(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()......续下一页......第页11.4.1
任务1
自动化修改网络设备密码配置第页......续上一页脚本的内容......##调度交换机命令行执行命令command.send("system-view"
+"\n")command.send("aaa"+"\n")command.send("local-user
admin
password
cipher
Jan16@Hw"+"\n")##更改登录密码结束后,返回用户视图并保存配置command.send("return"+"\n")command.send("save"+"\n")command.send("Y"+"\n")command.send("\n")##暂停2秒,并将命令执行过程赋值给output对象,通过print
output语句回显内容time.sleep(2)output=command.recv(65535).decode()
(output)##退出SSHssh_client.close()11.4.1
任务1
自动化修改网络设备密码配置3)在网管计算机执行脚本【changepassword.py】:[root@manage
~]#
python3
changepassword.py //调度python执行脚本Username:admin //手动输入SSH用户名,这里是adminPassword: //手动输入SSH用户密码,这里是HwEdu12#$第页11.4.1
任务1
自动化修改网络设备密码配置2、任务验证1)在网管计算机查看脚本的回显内容:Info:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
1.The
current
login
time
is
2020-01-18
15:12:48.<SW1>system-viewEnter
system
view,
return
user
view
with
Ctrl+Z.[SW1]aaa[SW1-aaa]local-user
admin
password
cipher
Jan16@Hw[SW1-aaa]return<SW1>saveThe
current
configuration
will
be
written
to
the
device.Are
you
sure
to
continue?[Y/N]YNow
saving
the
current
configuration
to
the
slot
0.Save
the
configuration
successfully.<SW1>……省略部分内容……第页11.4.1
任务1
自动化修改网络设备密码配置第页2)在网管计算机使用【ssh
admin@192.168.100.1】命令重新连接SW1[root@manage
~]#ssh
admin@192.168.100.1
admin@192.168.100.1‘s
password: //这里输入新密码Jan16@HwInfo:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
2.The
current
login
time
is
2020-01-18
15:15:48.<SW1>11.4.2
任务2
定时自动化备份网络设备配置1、配置过程1)在网管计算机创建备份交换机运行配置的脚本【backup.py】;[root@manage
~]#
vi
backup.py##导入paramiko、time、datetime等模块
import
paramikoimport
timefrom
datetime
import
datetime##设置SSH用户名和密码,需要注意这里的密码是新密码
username
="admin"password
="Jan16@Hw"##通过for语句遍历i的值为1/2/3/4,结合ip="192.168.100."+str(i)语句循环SSH登录交换机设备
for
i
in
range(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()……续下一页内容……第页11.4.2
任务2
定时自动化备份网络设备配置##提示SSH登录成功print ("ssh"+ip+"successfully")##设置回显内容不分屏显示command.send("screen-length
0
temporary"+"\n")##获取交换机运行配置output=(command.send("display
current-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+")
##提示正在备份print
("backuping")##将查询运行配置的回显内容赋值给recv这个对象recv=command.recv(65535).decode()##将回显内容写入backup这个对象,相当于写入了备份文件中backup.write(recv)##关闭打开的文件backup.close()##结束,断开SSH连接ssh_client.close()第页11.4.2
任务2
定时自动化备份网络设备配置2)配置计划任务实现每天凌晨1点自动执行脚本进行备份//编辑计划任务配置文件第页[root@manage
~]#
vi
/etc/crontab##在文件末尾填入下列内容后退出00
1
*
*
*
root
python
/root/backup.py[root@manage
~]#
mkdir
/root/backup[root@manage
~]#
systemctl
restart
crond[root@manage
~]#
systemctl
enable
crond//新建/root/backup文件夹//重启crond计划任务服务//设置计划任务服务开机自启动11.4.2
任务2
定时自动化备份网络设备配置2、任务验证1)凌晨1点后在网管计算机上使用【ls-l/root/backup】查看/root/backup目录下的文件。[root@manage
~]#
ls
-l
/root/backuptotal
28-rw-r--r--.1rootroot2924Jan1901:002020-1-19-192.168.100.1.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-192.168.100.2.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-192.168.100.3.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-192.168.100.4.txt第页第页11.4.2
任务2
定时自动化备份网络设备配置2)查看设备备份的备份文件,以2020-1-19-192.168.100.1.txt为例。[root@manage
~]#
cat
/root/backup/2020-1-19-192.168.100.1.txtInfo:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
1.The
current
login
time
is
2020-01-19
09:47:04.<SW1>screen-length
0
temporaryInfo:
The
configuration
takes
effect
on
the
current
user
terminal
interface
only.<SW1>display
current-configuration#sysname
SW1#vlan
batch
10
20
100
201#stp
mode
rstpstp
instance
0
priority
4096……省略部分内容……目录项目背景和需求分析项目相关知识项目规划设计项目实施项目测试第页11.5
项目测试第页1、在网管计算机使用【ssh
admin@192.168.100.1】命令重新连接SW1,用户输入新密码才可以正常ssh登录设备[root@manage
~]#ssh
admin@192.168.100.1
admin@192.168.100.1‘s
password: //这里输入新密码Jan16@HwInfo:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
2.The
current
login
time
is
2020-01-18
15:17:02.<SW1>11.5
项目测试2、在网管计算机上使用【date -s
"00:59 2020-1-20"】命令修改系统时间为新一天凌晨0点59分,1分钟后再使用【ls -l /root/backup】命令查看/root/backup目录下的文件,将能查看到新一天的备份已经生成。[root@manage
~]#
date
-s
"00:59
2020-1-20"Mon
Jan
20
00:59
CST
2020[root@manage
~]#
ls
-l
/root/backuptotal
56-rw-r--r--.1rootroot2924Jan1901:002020-1-19-192.168.100.1.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-192.168.100.2.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-192.168.100.3.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-192.168.100.4.txt-rw-r--r--.1rootroot2924Jan2001:002020-1-20-192.168.100.1.txt-rw-r--r--.1rootroot4281Jan2001:002020-1-20-192.168.100.2.txt-rw-r--r--.1rootroot4188Jan2001:002020-1-20-192.168.100.3.txt-rw-r--r--.1rootroot4238Jan2001:002020-1-20-192.168.100.4.txt第页本章总结本章通过公司批量自动更改交换机登录密码和自动备份的需求,展示了Python在网络自动化运维领域的具体应用,通过项目背景、项目需求分析、项目规划设计为子任务做铺垫,将项目实施部分拆分为多个子任务,符合工程项目实施的一般规律。通过对本章的学习,读者应对项目实施流程有一定的了解,同时能掌握Python在网络自动化运维的原理,应能熟练运用Python代码进行自动化、批量的运维操作。第页思考题下列哪个选项是正确将192.168.1.1这个IP赋值给a对象的Python代码()?a=192.168.1.1a=”192.168.1.1””192.168.1.1”=a”a”=”192.168.1.1”第页2. 在下列的选项中哪些不是Python的内建模块()?A.OS模块 B.Telnetlib模块 C.Paramiko模块D.getpass模块思考题3. 管理员在/etc/crontab计划任务配置文件中写入了如下内容,说法正确的是()?01
2
1
*
*
root
python/root/backup.pyA.计划任务将在每个月的1日2点01分重复执行B.计划任务将在1月的2日的1点被执行C.计划任务将由python用户执行D.计划任务将有root程序执行第页思考题4. 如下所示是管理员在一个Python脚本中写下的内容,下面说法正确的是()?import
paramikopassword
="123456"username
="admin"ssh_client=paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考冲刺模拟化学(广西卷)(全解全析)
- 2022年2月锡林郭勒盟直机关遴选公务员面试真题回忆版
- 丽江云南丽江市交通运输综合行政执法支队执法辅助人员招聘6人笔试历年参考题库及答案详解(有一套)
- 12师兵团职工考试试题及答案
- MnOx生物炭阴极BES修复土壤铅镉污染效能及引发抗性基因扩散机制
- 2025设备采购合同范本
- Ralfinamide-Standard-FCE-26742A-Standard-生命科学试剂-MCE
- 2025房地产买卖合同协议书范文
- 2025年简化版个人房屋租赁合同书
- (高清版)DB1302∕T 493-2019 乡村文化旅游服务中心建设与服务规范
- 2025-2030中国试验用动物模型行业市场发展趋势与前景展望战略研究报告
- 防诈骗知识培训课件内容
- 孩子抚养协议书电子版(2025年版)
- 【初中生物】光合作用(第1课时)课件-2024-2025学年人教版生物学七年级下册
- 2025-2030中国建筑信息模型(BIM)行业发展状况与前景趋势研究研究报告
- 阳光心理健康成长(课件)-小学生主题班会
- 羊肚菌种植项目可行性研究报告
- 卫健系统2025年上半年安全生产工作总结
- 麻精药品规范化管理与使用
- 庐江县2024-2025学年四下数学期末达标测试试题含解析
- 湘教版地理中考总复习教案
评论
0/150
提交评论