影刀RPA 网络质量监控:Ping与路由追踪自动化
作者:林焱 | 分类:影刀RPA新手教程 | 难度:★★
什么情况用
公司的IT运维需要监控多地办公网络质量。特别是分公司、仓库、门店用的是不同运营商的宽带,网络质量参差不齐。人工定时ping几十个目标IP,还要求记录丢包率和延迟,非常枯燥。
用影刀RPA定时执行ping和traceroute,采集数据做趋势分析,网络异常自动告警。运维人员从"手动检查工"变成"收到告警再处理"。
怎么做
第一步:确定监控目标
在Excel中维护监控清单:
店群矩阵自动化突破运营极限!
| 目标名称 | IP/域名 | 位置 | 运营商 | 告警阈值 |
|---|---|---|---|---|
| 总部核心交换机 | 192.168.1.1 | 北京 | 中国电信 | 延迟>50ms或丢包>1% |
| 阿里云服务器 | 47.x.x.x | 杭州 | 阿里云 | 延迟>100ms |
| 公司官网 | www.company.com | CDN | — | 延迟>200ms |
| DNS服务器 | 114.114.114.114 | 全网 | — | 延迟>100ms |
第二步:Python执行Ping
# 影刀Python节点:多目标Pingimportsubprocessimportplatformimportredefping(host,count=4):"""执行ping命令并解析结果"""system=platform.system().lower()ifsystem=="windows":cmd=["ping","-n",str(count),host]else:cmd=["ping","-c",str(count),host]try:result=subprocess.run(cmd,capture_output=True,text=True,timeout=30)output=result.stdout# 解析丢包率loss_match=re.search(r"(\d+)% loss|丢失 = (\d+)",output)loss_pct=int(loss_match.group(1)orloss_match.group(2))ifloss_matchelse100# 解析平均延迟(Windows中文版输出"平均 = XXXms")avg_match=re.search(r"平均 = (\d+)ms|Average = (\d+)ms|avg = (\d+\.?\d*)/(\d+\.?\d*)",output)ifavg_match:delay=int(avg_match.group(1)oravg_match.group(2)oravg_match.group(4)or0)else:delay=-1# 全部超时return{"host":host,"loss_pct":loss_pct,"avg_delay_ms":delay,"success":loss_pct<100}exceptsubprocess.TimeoutExpired:return{"host":host,"loss_pct":100,"avg_delay_ms":-1,"success":False}# 批量pingtargets=["192.168.1.1","www.baidu.com","114.114.114.114","47.x.x.x"]results=[]forhostintargets:r=ping(host,count=4)results.append(r)status="✅"ifr["success"]else"❌"print(f"{status}{host}| 丢包:{r['loss_pct']}% | 延迟:{r['avg_delay_ms']}ms")第三步:Traceroute路由追踪
# 影刀Python节点:路由追踪deftraceroute(host,max_hops=15):"""Windows下使用tracert命令"""cmd=["tracert","-d","-h",str(max_hops),host]try:result=subprocess.run(cmd,capture_output=True,text=True,timeout=60)output=result.stdout hops=[]forlineinoutput.split("\n"):# 匹配" 1 1 ms <1 ms <1 ms 192.168.1.1"格式match=re.match(r"\s*(\d+)\s+.*?(\d+)\s*ms.*?(\d+)\s*ms.*?(\d+)\s*ms\s+(\S+)",line)ifmatch:hops.append({"hop":int(match.group(1)),"delay1":int(match.group(2)),"delay2":int(match.group(3)),"delay3":int(match.group(4)),"ip":match.group(5)})returnhopsexceptExceptionase:return[]# 当ping异常时自动执行traceroute排查forrinresults:ifr["loss_pct"]>10:print(f"\n排查{r['host']}路由:")hops=traceroute(r["host"])forhopinhops:print(f" 第{hop['hop']}跳 →{hop['ip']}| 延迟:{hop['delay1']}ms")第四步:数据存储与趋势分析
# 追加到历史记录importpandasaspdfromdatetimeimportdatetime record={"时间":datetime.now().strftime("%Y-%m-%d %H:%M"),"目标":host,"丢包率":loss_pct,"平均延迟ms":avg_delay,"是否异常":"是"ifloss_pct>1oravg_delay>200else"否",}# 影刀写入Excel追加模式df=pd.DataFrame([record])print(f"记录:{host}@{record['时间']}")第五步:异常告警
在影刀中判断结果:
- 如果关键目标(核心交换机)丢包>0 → 【企微推送】给运维群
- 如果多个目标同时丢包 → 判断为本地网络问题 → 提醒"请检查路由器"
- 如果只有某个外网IP异常 → 可能是对方服务器问题,标记为"外部异常,等待恢复"
影刀操作动作:
- 【Python节点】→ 执行全部ping
- 【判断】→ 遍历结果列表
- 【条件】→ 丢包率>阈值或延迟>阈值
- 【企微推送】→ 发送告警消息
有什么坑
坑1:Windows ping中文输出解析
Windows中文版ping输出是"来自 192.168.1.1 的回复: 字节=32 时间=2ms TTL=64",正则表达式需要适配中文。如果用英文版Windows或Linux,输出格式完全不同。建议先打印一次输出确认格式再写正则。
temu店群自动化报活动案例
坑2:ping被防火墙拦截
很多企业防火墙默认禁用ICMP协议(ping使用的协议),导致ping所有外网IP都超时。这不是网络坏了,是策略限制。跟网络管理员确认是否允许ICMP。
坑3:Traceroute有时非常慢
有些中间节点的路由器不响应ICMP,traceroute会等超时(每个节点等3秒),15跳就是45秒。如果监控几十个目标每个都traceroute,时间不够。建议只在ping异常时才自动执行traceroute。
坑4:数据量积累问题
如果每分钟ping 10个目标,每天产生14400条记录。一个月就是43万条。Excel存储会越来越卡。建议每天的数据汇总后再删除原始明细,只保留日统计(日均延迟、最大丢包率)。
坑5:Ping延迟 ≠ 实际业务体验
ping延迟低不代表业务正常——DNS解析慢、SSL握手慢、服务器处理慢都不会反映在ping值里。ping监控只是网络质量的第一层,要全面还需要HTTP状态码监控。
总结:网络监控自动化不复杂,但告警阈值设不好就变成狼来了——太敏感天天报警没人看,太迟钝出了问题不知道。建议先跑一周收集基准数据,再按"均值+3倍标准差"设置动态阈值。