当前位置:首页>python>Coding实践:python基础练习2,整合各厂商信息格式,整合日志格式,完成兼容性

Coding实践:python基础练习2,整合各厂商信息格式,整合日志格式,完成兼容性

  • 2026-09-12 14:34:19
Coding实践:python基础练习2,整合各厂商信息格式,整合日志格式,完成兼容性
学习环境:windows11和python3.14,搭配wmware,搭配Cisco路由器虚拟机,Liunx虚拟机和python3.11,TraeIDE。
20年资深网工,CCIE 1937X SECURITY。
通过这些练习,实现对各厂商的show信息,日志信息进行采集,重新定义排列逻辑。和AI的搭配场景:
1.全部AI写代码,并且在写的同时备注好功能,做好一步一校验的逻辑,写成学习文档,我直接在系统校验结果即可。学会了,这些材料作为备份以后复习直接可使用。
2.skills技能:精确的采集和排列指令,直接且高效,避免浪费token。
3.agent能力:指定的AI agent,完成指定场景的事情,避免AI幻觉。
4.ITSM对接:以指定的格式存入数据库,而数据库提供标准的API接口以备其它AI agent调用分析

1.f-string:打印一条Syslog告警

定义以下变量,使用 f-string 打印一条网络设备的Syslog告警信息:

date = "2026-03-03"

hostname = "SW-Core-01"

level = "CRITICAL"

message = "%LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to down"

打印效果如下:

2026-03-03 SW-Core-01 CRITICAL %LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to down

代码:

# 定义变量

date="2026-03-03"

hostname="SW-Core-01"

level="CRITICAL"

message="%LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to down"

# 使用f-string打印Syslog告警信息

print(f"{date}{hostname}{level}{message}")

效果截图:

2.切片:提取接口类型和编号

现在有一个接口名字符串:

interface = "GigabitEthernet0/0/1"

通过切片的方式,分别提取出接口类型和接口编号,并打印:

接口类型: GigabitEthernet

接口编号: 0/0/1

提示: 先数一下 "GigabitEthernet" 有几个字符。

代码:

# 定义接口名字符串

interface="GigabitEthernet0/0/1"

# 计算"GigabitEthernet"的字符数:15个字符

# 提取接口类型(前15个字符)

intf_type=interface[:15]

# 提取接口编号(从第15个字符开始到结束)

intf_number=interface[15:]

# 打印结果

print(f"接口类型: {intf_type}")

print(f"接口编号: {intf_number}")

效果截图:

3.字符串方法:处理show version输出

从设备采集回来的版本信息字符串经常有多余的空格,需要处理后再使用:

version_raw = "Cisco IOS XE Software, Version 17.03.04"

完成以下3步并分别打印结果:

去掉首尾空格(strip)

把字符串转成全大写(upper)

把 "17.03.04" 替换成 "17.06.01"(replace)

打印效果如下:

去掉空格: Cisco IOS XE Software, Version 17.03.04

转大写:CISCO IOS XE SOFTWARE, VERSION 17.03.04

替换版本: Cisco IOS XE Software, Version 17.06.01

代码:

# 定义原始版本信息字符串

version_raw="  Cisco IOS XE Software, Version 17.03.04  "

# 1. 去掉首尾空格

version_stripped=version_raw.strip()

# 2. 转成全大写

version_upper=version_stripped.upper()

# 3. 替换版本号

version_replaced=version_stripped.replace("17.03.04", "17.06.01")

# 打印结果

print(f"去掉空格: {version_stripped}")

print(f"转大写:   {version_upper}")

print(f"替换版本: {version_replaced}")

效果:

4.format格式化:打印接口状态巡检报告

定义以下变量,使用 format() 打印一份格式整齐的接口状态报告:

intf1 = "Gi0/0", status1 = "up", speed1 = "1G"

intf2 = "Gi0/1", status2 = "down", speed2 = "1G"

intf3 = "Gi0/2", status3 = "up", speed3 = "10G"

打印效果如下:

接口状态速率

--------------------

Gi0/0up1G

Gi0/1down1G

Gi0/2up10G

代码:

# 定义变量

intf1, status1, speed1="Gi0/0", "up", "1G"

intf2, status2, speed2="Gi0/1", "down", "1G"

intf3, status3, speed3="Gi0/2", "up", "10G"

# 打印表头

print("接口      状态    速率")

print("--------------------")

# 使用format()方法打印接口信息,确保格式对齐

print("{:<8}{:<6}{:<4}".format(intf1, status1, speed1))

print("{:<8}{:<6}{:<4}".format(intf2, status2, speed2))

print("{:<8}{:<6}{:<4}".format(intf3, status3, speed3))

效果:

最新文章

随机文章