创建网站的快捷方式,广东十大网站建设排名,国外主流网站开发技术,搜索引擎排名优化建议1. 前言
最近需要ping地址#xff0c;还是挺多的#xff0c;就使用python搞一个ping脚本#xff0c;记录一下#xff0c;以免丢失了。
2. 脚本介绍
首先检查是否存在True.txt或False.txt文件#xff0c;并在用户确认后进行删除#xff0c;然后从IP.txt的文件中读取IP地…1. 前言
最近需要ping地址还是挺多的就使用python搞一个ping脚本记录一下以免丢失了。
2. 脚本介绍
首先检查是否存在True.txt或False.txt文件并在用户确认后进行删除然后从IP.txt的文件中读取IP地址然后使用多线程并发地对这些IP地址进行ping测试。根据测试结果将可连接的IP地址写入True.txt文件不可连接的IP地址写入False.txt文件。
IP.txt文件需要每一行为一个IP地址不可放置网段并且通信与不通信是暂存在列表中的若中间结束ping则数据会丢失只有当全部运行完后会一次性写入之前也测试过一边测试一边写入会出现频繁的读取文件和写入文件总会出现IP丢失的情况。此次经过测试无丢失情况。
测试环境python3.10
测试结果IP.txt中共计1.2011个IP地址20线程共计耗时32分钟。 2.1. 文件夹内容
文件夹中False.txt和True.txt这两个文件是不需要创建的程序会自动创建而且IP.txt是需要创建的并且放置~地址每行一个正常回车换行或者在表格中弄好直接复制过来。
每次执行只需要替换IP.txt中的IP地址就可以了。 2.2. 脚本源码
这里电脑性能好而且想快的话直接多上一些线程一开始我测试的时候线程没设定好直接给我干了2400多线程电脑直接卡死预估100多线程应该都没问题。
import threading
import subprocess
import os
from concurrent.futures import ThreadPoolExecutor判断是否存在True.txt或False.txt文由于如果之前存在可能会导致执行添加了但是测试好像不会不过添加一个也无妨。
def check_confirmation():if os.path.exists(True.txt) or os.path.exists(False.txt):user_input input(发现已存在的True.txt或False.txt文件是否删除(y/n): )if user_input.lower() y:if os.path.exists(True.txt):os.remove(True.txt)if os.path.exists(False.txt):os.remove(False.txt)elif user_input.lower() n:exit()else:print(无效的输入。请输入 y 或 n。)check_confirmation()def ping_ip(ip, true_ips, false_ips):如果IP地址能够ping通则将其添加到true_ips列表中否则添加到false_ips列表中。command [ping, -n, 1, ip]result subprocess.call(command, stdoutsubprocess.DEVNULL, stderrsubprocess.DEVNULL)if result 0:true_ips.append(ip)print(f{ip} 可以ping通!)else:false_ips.append(ip)print(f{ip} 无法ping通!)def main():check_confirmation()with open(IP.txt, r) as file:ips file.readlines()true_ips []false_ips []控制线程这里我写的是20线程。with ThreadPoolExecutor(max_workers20) as executor:for ip in ips:ip ip.strip()executor.submit(ping_ip, ip, true_ips, false_ips)整个程序运行完将列表中的数据写入到相应的文件夹中。with open(True.txt, w) as file:for ip in true_ips:file.write(ip \n)with open(False.txt, w) as file:for ip in false_ips:file.write(ip \n)if __name__ __main__:main()