- A+
根据现有提供海量ip进行检测网络质量,如果手动操作那将成为一项很难完成的操作。为了简化这一任务,可以使用 Python自动化脚本,利用 openpyxl
和 pythonping
库,自动执行 ping 测试并记录结果到 Excel 文件。
openpyxl:
openpyxl 是一个用于操作 Excel 文件的库。它允许你读取、写入和修改 Excel 文件(.xlsx 格式)中的数据。你可以创建、编辑和格式化 Excel 表格,进行单元格操作,添加图表等。
pythonping:
pythonping 是一个用于执行网络 ping 测试的库。通过发送 ICMP Echo 请求到目标主机并接收响应,它可以测量网络连接的延迟,并提供有关丢包率等信息。
1. 准备工作
首先,我们需要安装所需的 Python 库。在终端中运行以下命令:
pip install openpyxl pythonping
这将安装 openpyxl
和 pythonping
库。
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,内容格式如下格式即可。示例如下
脚本说明
- 测试数据将以ICMP返回数据作为解析原始数据
- 脚本会打开名为
test1.xlsx
的 Excel 文件,执行 ping 测试并更新文件中的数据。 - 新的数据将包括平均延迟、最大延迟、最小延迟和丢包数。
4. 运行脚本
在终端中运行脚本:
python3 ping.py
脚本将执行 ping 测试结束,并将结果更新到 Excel 文件中。
- 微信公众号
- 扫一扫关注微信公众号
- 运维交流群
- 扫一扫二维码加入群聊