要更快地运行Ping Sweep Python脚本,可以考虑以下几个方面:
Ping Sweep 是一种网络扫描技术,用于发现网络中活动的设备。它通过向目标网络中的多个IP地址发送ICMP Echo请求(即Ping命令),并根据响应来确定哪些IP地址是活动的。
使用Python的concurrent.futures
模块来实现并行化处理,可以同时发送多个Ping请求。
import subprocess
from concurrent.futures import ThreadPoolExecutor
def ping(ip):
try:
output = subprocess.check_output(['ping', '-c', '1', ip], timeout=1)
return ip
except subprocess.CalledProcessError:
return None
except subprocess.TimeoutExpired:
return None
def ping_sweep(network):
active_ips = []
with ThreadPoolExecutor(max_workers=100) as executor:
results = list(executor.map(ping, network))
active_ips = [ip for ip in results if ip is not None]
return active_ips
network = ['192.168.1.' + str(i) for i in range(1, 255)]
active_ips = ping_sweep(network)
print(active_ips)
可以考虑使用fping
或hping
等更快的Ping工具替代系统自带的ping
命令。
import subprocess
from concurrent.futures import ThreadPoolExecutor
def ping(ip):
try:
output = subprocess.check_output(['fping', '-c', '1', ip], timeout=1)
return ip
except subprocess.CalledProcessError:
return None
except subprocess.TimeoutExpired:
return None
def ping_sweep(network):
active_ips = []
with ThreadPoolExecutor(max_workers=100) as executor:
results = list(executor.map(ping, network))
active_ips = [ip for ip in results if ip is not None]
return active_ips
network = ['192.168.1.' + str(i) for i in range(1, 255)]
active_ips = ping_sweep(network)
print(active_ips)
适当减少Ping请求的超时时间,可以提高脚本的响应速度。
def ping(ip):
try:
output = subprocess.check_output(['ping', '-c', '1', '-W', '0.5', ip], timeout=0.5)
return ip
except subprocess.CalledProcessError:
return None
except subprocess.TimeoutExpired:
return None
原因:
解决方法:
原因:
解决方法:
通过上述优化方法和解决方法,可以显著提高Ping Sweep脚本的运行速度和准确性。
领取专属 10元无门槛券
手把手带您无忧上云