自动化ping测网络连通性监测与Excel自动记录

  • A+
所属分类:Linux基础 运行脚本
自动化ping测网络连通性监测与Excel自动记录

根据现有提供海量ip进行检测网络质量,如果手动操作那将成为一项很难完成的操作。为了简化这一任务,可以使用 Python自动化脚本,利用 openpyxlpythonping 库,自动执行 ping 测试并记录结果到 Excel 文件。

openpyxl:
openpyxl 是一个用于操作 Excel 文件的库。它允许你读取、写入和修改 Excel 文件(.xlsx 格式)中的数据。你可以创建、编辑和格式化 Excel 表格,进行单元格操作,添加图表等。

pythonping:
pythonping 是一个用于执行网络 ping 测试的库。通过发送 ICMP Echo 请求到目标主机并接收响应,它可以测量网络连接的延迟,并提供有关丢包率等信息。

1. 准备工作

首先,我们需要安装所需的 Python 库。在终端中运行以下命令:

pip install openpyxl pythonping

这将安装 openpyxlpythonping 库。

2、脚本

# !/usr/bin/python3

import openpyxl
from pythonping import ping

def ping_and_update_excel(ip, row, sheet):
    try:
        # 执行 ping 测试
        result = ping(ip, count=2)

        if result is not None and result.rtt_avg:
            # 将秒转换为毫秒
            avg_delay = result.rtt_avg * 1000
            max_delay = result.rtt_max * 1000
            min_delay = result.rtt_min * 1000
            packet_loss = round(result.packet_loss)

            # 保留三位小数
            avg_delay = round(avg_delay, 3)
            max_delay = round(max_delay, 3)
            min_delay = round(min_delay, 3)

            # 更新 Excel 表格中的值
            sheet.cell(row=row, column=4, value=avg_delay)  # 平均延时
            sheet.cell(row=row, column=5, value=max_delay)  # 最大延时
            sheet.cell(row=row, column=6, value=min_delay)  # 最小延时
            sheet.cell(row=row, column=7, value=packet_loss)  # 丢包数

            print(
                f"Updated {ip} at row {row} with actual values - Average: {avg_delay} ms, Max: {max_delay} ms, Min: {min_delay} ms.")
        else:
            print(f"Failed to ping {ip}.")
    except Exception as e:
        print(f"Error while pinging {ip}: {e}")


def main():
    # 打开 Excel 文件
    excel_file = "test1.xlsx"
    wb = openpyxl.load_workbook(excel_file)
    sheet = wb.active

    # 添加新的表头
    new_headers = ["平均延时", "最大延时", "最小延时", "丢包数"]
    for col_num, header in enumerate(new_headers, start=4):
        sheet.cell(row=1, column=col_num, value=header)

    # 循环测试
    for row in range(2, sheet.max_row + 1):
        ip = sheet.cell(row=row, column=1).value
        if ip:
            print(f"Pinging {ip}...")
            ping_and_update_excel(ip, row, sheet)

    # 保存
    wb.save(excel_file)


if __name__ == "__main__":
    main()

新建test1.xlsx,内容格式如下格式即可。示例如下

自动化ping测网络连通性监测与Excel自动记录

脚本说明

  • 测试数据将以ICMP返回数据作为解析原始数据
  • 脚本会打开名为 test1.xlsx 的 Excel 文件,执行 ping 测试并更新文件中的数据。
  • 新的数据将包括平均延迟、最大延迟、最小延迟和丢包数。

4. 运行脚本

在终端中运行脚本:

python3 ping.py

脚本将执行 ping 测试结束,并将结果更新到 Excel 文件中。


  • 微信公众号
  • 扫一扫关注微信公众号
  • weinxin
  • 运维交流群
  • 扫一扫二维码加入群聊
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: