1.背景概述

资产需要安装 Agent,由于某些历史遗留原因,资产上线率仅达 10%。需要快速定位问题 问题资产。

资产字段如:

Agent版本

操作系统版本

主机状态

主机IP

上次活跃时间

2.2.2.10

Microsoft Windows 7 旗舰版

离线

10.117.2.65

2023/10/11 13:31

2.2.2.10

Microsoft Windows 10 家庭版

离线

10.12.3.12

2025/3/17 16:21

2.2.2.10

Microsoft Windows 10 家庭版

在线

10.12.3.195

2025/6/27 17:06

2.2.2.10

Microsoft Windows 7 旗舰版

离线

10.223.112.149

2025/6/27 16:42

2.2.2.10

Microsoft Windows 10 家庭版

离线

10.253.131.150

2023/12/13 15:33

2.2.2.10

Microsoft Windows 10 家庭中文版

离线

10.223.131.150

2023/12/1 10:58

2.2.2.10

Microsoft Windows 10 家庭版

离线

10.223.38.114

2024/7/5 9:31

2.2.2.10

Microsoft Windows 7 专业版

已卸载

2.2.2.10

Microsoft Windows 10 家庭版

在线

10.214.71.36

2025/6/27 17:06

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段的在线/离线条目,同时统计最近和最晚离线时间,便于定位

IP(S)

总条数

在线

离线

已卸载

(离线机器)最晚活跃时间

(离线机器)最近活跃时间

10.117.2

1

0

1

0

2023-10-11 13:31:00

2023-10-11 13:31:00

10.12.3

2

1

1

0

2025-03-17 16:21:00

2025-03-17 16:21:00

10.223.112

1

0

1

0

2025-06-27 16:42:00

2025-06-27 16:42:00

10.233.131

2

0

2

0

2023-12-13 15:33:00

2023-12-01 10:58:00

10.253.38

1

0

1

0

2024-07-05 09:31:00

2024-07-05 09:31:00

10.242.71

11

3

8

0

2025-06-27 17:02:00

2023-09-21 14:11:00

10.234.72

10

7

2

1

2025-06-27 10:51:00

2023-09-25 13:25:00

10.24.77

13

4

9

0

2025-06-27 16:59:00

2023-11-21 17:55:00

10.214.79

5

3

2

0

2025-06-20 14:45:00

2025-06-04 15:50:00

10.216.3

2

1

0

1