先来说说为什么要学习Python吧。首先,确实,这几年在运维领域Python确实比较火,他的语法简单,功能强大,而且最重要的是上手相对比较容易;
其次,目前在日常工作中,确实十分急需自动化运维的工具,例如监控工具、巡检工具、配置工具等。身为网络行业的一员,我猜你一定碰到过类似需求或者问题:
需求一:某司使用了超过500台华为交换机,有一天你接到通知,现有交换机的操作系统存在很多安全漏洞,需要尽快升级,你怎么办?
需求二:某大型企业网络中,有超过2000台网络设备,包括路由器、交换机、防火墙等,最近公司更换了AAA认证服务器的IP地址,你需要修改相关配置,你怎么办?
类似这种重复劳动的苦逼需求,一直伴随着你。。。让我们一起,通过Python语言实现网络运维的自动化,提高网络运维工作的效率和准确率。
首先,Python可以通过套接字编程和socket模块操纵底层网络,从而为Python所在的操作系统和网络设备之间搭建一个低层次的网络接口。
此外,Python模块还可以通过Telnet、SSH和API与网络设备进行更高级别的交互。今天将简单探讨如何在Python中使用Telnet模块在远程设备上建立连接和执行命令。
在Python中使用Telnet协议:
Telnet是TCP/IP协议栈中最早可用的协议之一,主要用来在服务器和客户端之间建立连接、交换数据。服务器端监听TCP端口23,等待客户端的连接请求。在下面的例子中,我们将创建一个Python脚本作为Telnet客户端。
Python原生的telnetlib库已经支持Telnet,所以不需要另外安装。
客户端对象可以通过telnetlib模块中的Telnet()类实例化创建。
通过这个对象,我们能够使用telnetlib中的两个重要函数——read_until()(用于读取输出结果)和write()(用于向远程设备写入内容)。
这两个函数用来和Telnet连接交互,从Telnet连接读取或向Telnet连接写入数据。
还有一点非常关键,使用read_until()读取Telnet连接的内容之后缓冲区会被清空,无法再次读取。
因此,如果在后面的处理中还会用到之前读取的重要数据,需要在脚本里将其另存为变量。
让我们一步步分析这个脚本:
(1)在Python脚本中导入telnetlib模块,在变量中定义用户名和密码。代码如下。
import telnetlib
username = "zhaox" #定义用户名
password = "huawei@123" #定义密码
enable_password = "access123" #配置模式密码 如果没有可省略
conn = telnetlib.Telnet(host="192.168.1.1")
#定义一个变量,用来和远程主机建立连接。注意,只需要提供远程主机的IP地址,不用在连接建立过程中提供用户名或密码。
(2)通过读取Telnet连接返回的输出并搜索“Username:”关键字来提供Telnet连接的用户名。然后写入管理员用户名。如果需要,用同样的方法输入Telnet密码。
conn.read_until(b"Username:")conn.write(username.encode('utf-8') + b"\n")conn.read_until(b"Password:")conn.write(password.encode('utf-8') + b"\n")
Telnet连接建好之后,在脚本中加上控制台提示符非常重要;否则,连接将陷入死循环。接着Python脚本就会超时并出现错误。
(3)向Telnet连接写入dis ip int b命令并开始读取返回内容,直到出现路由器提示符(最后的字符)为止。通过以下命令可以得到路由器的接口配置。
conn.read_until(b">")
conn.write(b"sys" + b"\n")
conn.read_until(b"Ctrl+Z.")
conn.write(b"dis ip int b" + b"\n")
output = conn.read_until(b"4 up up")
print(output.decode())
完整的脚本如下所示:
# # coding=utf-8
# """
# python连接路由器演示
# """
import telnetlib
username = "zhaox" #定义用户名
password = "huawei@123" #定义密码
conn = telnetlib.Telnet(host="192.168.1.1")
#定义变量用于建立远程连接
conn.read_until(b"Username:")
conn.write(username.encode('utf-8') + b"\n")
conn.read_until(b"Password:")
conn.write(password.encode('utf-8') + b"\n")
conn.read_until(b"Change now? [Y/N]:")
conn.write(b"n" + b"\n")
conn.read_until(b">")
conn.write(b"sys" + b"\n")
conn.read_until(b"Ctrl+Z.")
conn.write(b"dis ip int b" + b"\n")
output = conn.read_until(b"4 up up")
print(output.decode())
脚本运行结果如下所示:
注意,在输出中包含了执行的命令dis ip int b,可以使用内置的字符串函数(如replace())从输出中清除它们,例如:cleaned_output = output.replace(“dis ip int b”,“”)
现在我们用telnetlib将VLAN配置推送到实验环境中的4台交换机。使用Python的range()函数创建一个VLAN列表,遍历列表将VLAN ID推送到当前交换机。注意,我们将交换机的IP地址放到了另一个列表中,使用外部for循环来遍历这个列表。
# 批量创建VLAN示例
import telnetlib
import getpass
import time
switch_ips = [ #定义交换机IP地址
"192.168.100.101",
"192.168.100.102",
"192.168.100.103",
"192.168.100.104"]
username = "zhaox" #定义账号密码
password = "huawei@123"
for sw_ip in switch_ips:
print("\n ############### 当前设备:"+sw_ip+" ############### \n")
con = telnetlib.Telnet(host=sw_ip.strip())
con.read_until(b"Username:")
con.write(username.encode('utf-8') + b"\n")
con.read_until(b"Password:")
con.write(password.encode('utf-8') + b"\n")
con.read_until(b"The current login time")
con.write(b"sys" + b"\n")
vlans = range(300,304) #VLAN ID 编号 300-304 不含304
for vlan_id in vlans:
print("\n ############### 正在添加 VLAN "+str(vlan_id)+" ############### \n")
v = "vlan "+str(vlan_id)
con.write(v.encode('utf-8') + b"\n") #添加VLAN
# con.write(b"undo " + v.encode('utf-8') + b"\n") 删除VLAN
time.sleep(1) #创建一次后等待交换机反应1秒
最外层的for循环用来遍历设备列表,然后在每次循环(每个设备)中生成范围为300~304之间的四个数字作为VLAN ID并将它们推送到当前设备,当然 如果需要更多VLAN,则设置列表范围更大即可。
脚本运行结果如下:
当然,也可以通过交换机控制台检查运行结果:
小结:
今天我们开始使用Python进入网络自动化世界。本次讨论了Python中的一些工具,通过Telnet建立到远程节点的连接,并使用脚本为多台设备推送配置,Python都可以轻松实现。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
今天的文章用python开发的运维管理系统_python在自动化领域的应用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83988.html