1.背景概述
资产需要安装 Agent,由于某些历史遗留原因,资产上线率仅达 10%。需要快速定位问题 问题资产。
资产字段如:
2.处理脚本
统计每个 IP C 段的在线数量,确认离线时间,定位问题 IP 段。
import pandas as pd
# 1. 读取 Excel 文件
file_path = "data.xlsx"
df = pd.read_excel(file_path)
# 2. 提取 C 段(IP 前三部分,如 10.17.2)
def extract_c_segment(ip):
parts = ip.split('.')
return f"{parts[0]}.{parts[1]}.{parts[2]}" # 如 "10.17.2"
df["C段"] = df["主机IP"].apply(extract_c_segment)
# 3. 统计每个 C 段的总条数、在线数、离线数、已卸载数
status_summary = df.groupby("C段")["主机状态"].value_counts().unstack(fill_value=0)
status_summary["总条数"] = status_summary.sum(axis=1)
status_summary = status_summary[["总条数", "在线", "离线", "已卸载"]]
# 4. 统计离线机器的最晚和最早活跃时间
offline_df = df[df["主机状态"] == "离线"].copy() # 筛选离线状态的机器
offline_summary = offline_df.groupby("C段")["上次活跃时间"].agg(["max", "min"])
offline_summary.columns = ["(离线机器)最晚离线时间", "(离线机器)最近离线时间"]
# 5. 合并两个统计结果
final_summary = pd.merge(
status_summary,
offline_summary,
on="C段",
how="left" # 保留所有 C 段,即使没有离线机器
)
output_file = "result.xlsx"
final_summary.to_excel(output_file)
print(f"统计完成!结果已保存到 {output_file}")
3.处理结果
统计每个 C段的在线/离线条目,同时统计最近和最晚离线时间,便于定位