- 持续 ping 给定的 4 个 IP。
- 在 1 小时内运行脚本。
- 如果发现 IP 有丢包,则将丢包的 IP 和丢包的持续时间记录到 ping_result.txt 中。
- ping_result.txt中包含了单个 IP 丢包持续时间,所有 IP 丢包持续时间,单个 IP 丢包次数,和所有 IP 丢包汇总次数的汇总数据。
- 脚本支持在 Windows 环境下运行。
import time import os hosts = ["10.4.1.100", "10.4.1.101", "10.4.1.102", "10.4.1.103"] duration = 3600 # 运行时间 1 小时 interval = 1 # ping 一次的时间间隔,单位:秒 result_file = "ping_result.txt" with open(result_file, "w", encoding="utf-8") as f: # 初始化各项汇总数据 total_host_lost_duration = {} for host in hosts: total_host_lost_duration[host] = 0 total_lost_duration = 0 total_lost_count = 0 start_time = time.time() while time.time() - start_time <= duration: for host in hosts: response = os.system("ping -n 1 " + host + " >nul") if response != 0: print(host + " 丢包") lost_duration = interval # 丢包的持续时间为 interval total_host_lost_duration[host] += lost_duration total_lost_duration += lost_duration total_lost_count += 1 record = "{} 在第 {} 秒开始丢包,已持续 {} 秒\n".format( host, int((time.time() - start_time) - interval), lost_duration ) f.write(record) time.sleep(interval) # 输出汇总信息 f.write("\n汇总信息:\n") for host in hosts: f.write("{} 丢包 {} 次,共持续 {} 秒\n".format(host, total_host_lost_duration[host] // interval, total_host_lost_duration[host])) f.write("所有 IP 一共丢包 {} 次,共持续 {} 秒\n".format(total_lost_count, total_lost_duration))
结果文件显示:
10.4.1.100 在第 57 秒开始丢包,已持续 1 秒 10.4.1.101 在第 57 秒开始丢包,已持续 1 秒 10.4.1.102 在第 57 秒开始丢包,已持续 1 秒 10.4.1.103 在第 57 秒开始丢包,已持续 1 秒 10.4.1.100 在第 58 秒开始丢包,已持续 1 秒 10.4.1.101 在第 58 秒开始丢包,已持续 1 秒 10.4.1.102 在第 58 秒开始丢包,已持续 1 秒 10.4.1.103 在第 58 秒开始丢包,已持续 1 秒 汇总信息: 10.4.1.100 丢包 33 次,共持续 33 秒 10.4.1.101 丢包 33 次,共持续 33 秒 10.4.1.102 丢包 33 次,共持续 33 秒 10.4.1.103 丢包 33 次,共持续 33 秒 所有 IP 一共丢包 132 次,共持续 132 秒
简单使用ping持续测试网络状态
于 2023-04-20 10:50:36 首次发布