python在运维上可以干什么,请举几个具体的例子?

我的职业是网工,系统运维经验有限。红帽收购Ansible后,学过点Ansible的皮毛。但是除了考试,没有实操过。

我以网络工程师NetDevOps的视角来简单回答一下吧。水平有限。权当参考。有不对的地方,请同行朋友们多多指正。

最后,我还放置了一个Python处理IP归属问题的小案例来演示一下。

我自己对Python可以在网络运维上干什么的理解:

Python在网络运维上可以干的事情非常多。主要分为操作、分析两类。

操作:

可以利用telnetlab、paramiko、netmiko等封装好的第三方库来远程登录、操作网络设备(路由器、交换机、防火墙)还可以利用Python的多线程函数,快速、批量、自动化的下发配置、收集信息。

分析:

可以用Python的textFSM、ntc-templates等文本解析第三方库,输出结构化的网络配置信息。提高网络分析、排障的效率。可以用netaddr、IPy、ping3等第三方库,用来批量测试和检索信息。

特别是近几年来,NetDevOps界围绕Python,开发了一套开源的网络自动化框架:Nornir

Nornir在网络工程中的地位,堪比GNU-Linux运维中的Ansible,更为业界称道的是,Nonir还可以用Python来写逻辑,比Ansible只能用yaml写剧本的方式更显灵活。

当然,NetDevOps从属于DevOps,和DevOps不限于Python一样。Go语言中也有NetDevOps的第三方类库和Nornir框架。

只是Python相比其他语言,上手难度稍小一点。Python是动态解释型语言,不需要定义变量的数据类型,也不用太操心语法规则。代码逻辑的实现要简单一些,很多功能都可以依赖其丰富的第三方库来实现,只有版本和包管理稍显麻烦。

Go是静态编译型语言,类C,写起来稍微麻烦点,比如变量的类型、语法规则的限制等等。但好处是可以一次编译出可执行文件。同类操作系统平台可以通用。不像Python那样,需要一大堆第三方包的依赖。相比于Python后来才引入并发和多线程,Go天生高并发,用高并发也略显简单。非常适合大型网络运维。

案例:利用Python的第三方库netaddr,快速的挑选出属于业务分区网段的IP地址

案例分享

很多传统数据中心网络,都是按照业务逻辑进行分区设计的。大部分网络分区的网关,都部署在了各自分区的汇聚层设备上。这样,既层次化地定义了业务逻辑,又缩小了故障域范围。特别有利于IP网段的分层和业务逻辑的调整。

(1)案例:

最近,数据中心漏洞扫描设备,扫描出了一些主机存在安全漏洞。于是,安全部门的同事列出了一张IP地址清单。想请网络部门帮忙定位这些主机从属于哪个网络分区。安全部门特别想把清单中属于业务分区的IP地址挑出来,好针对性的修补漏洞。

(2)思路

第一种方法,传统网络运维的解决思路举例:

登录业务分区的汇聚设备(网关)提取ARP表,然后再用excel的vlookup函数去作匹配。不过,这样的做法也是有缺陷的,ARP表在某一时刻,是可能收集不全主机IP的(主机有可能关机)

第二种方法,用程序遍历业务网段,在遍历的同时,循环对比IP清单中提供的IP,把属于业务网段的IP地址挑出来:

登录业务分区的汇聚设备(网关)收集所有业务网段,然后利用Python专门处理IP地址的库函数,快速比对IP清单。把清单中属于业务网段的IP地址挑出来。

案例代码分享

(1)安全部门提供的IP清单

把安全部门提供的IP清单拷贝至文本文件中,由于涉密,我就使用自己定义的私有地址来举例:

# ipaddress.txt172.16.1.148
172.16.1.225
172.16.1.234
172.16.1.2
172.16.1.11
172.16.2.122
172.16.2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值