对大量ip进行批量ping检测的python脚本
对大量ip进行批量ping检测的python脚本
ping_test.py
import subprocess
def ping_host(host, is_windows):
"""
发送一个ping请求到指定的主机,并返回ping的结果。
"""
# 根据操作系统类型选择ping命令和参数
if is_windows:
params = ['ping', '-n', '1', host]
else:
params = ['ping', '-c', '1', host]
# 发送ping请求并获取输出
result = subprocess.run(params, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
output = result.stdout + result.stderr
# 分析ping输出
if is_windows:
# 对于Windows系统,检查是否有"请求超时"这样的输出
return "请求超时" not in output
else:
# 对于UNIX-like系统,检查是否有"64 bytes from"或"0% packet loss"这样的输出
return ("64 bytes from" in output) or ("0% packet loss" in output) or (not output)
# 显示操作系统选择菜单
print("请选择您的操作系统:")
print("1. Windows")
print("2. Linux/macOS")
# 获取用户输入
choice = input("请输入对应的序号:")
# 根据用户输入确定操作系统类型
is_windows = choice == "1"
# 读取iplist.txt文件中的IP地址,"iplist.txt"换成自己的ip字典文件的文件名
with open('iplist.txt', 'r') as file:
ips = file.read().splitlines()
# 对每个IP地址执行ping操作,并输出结果
for ip in ips:
if ping_host(ip, is_windows):
print(f"ping {ip} 是通的")
else:
print(f"ping {ip} 不通")
注意:
# 读取iplist.txt文件中的IP地址,"iplist.txt"需换成自己的ip字典文件的文件名
with open('iplist.txt', 'r') as file:
ips = file.read().splitlines()
效果展示: