Недавно написал небольшой скрипт для скана подсетей с многопотоком. В файл input.txt записываются маски, в файл output.txt выводятся рабочие подсети. Использовал когда парсил рабочие подсети во время белых списков, может кому-то пригодиться я хз import ipaddress import threading from main import output_file from tcppinglib import tcpping ping_port = 443 # порт для пинга input_file = "input.txt" # файл с масками output_file = "output.txt" # файл для вывода результата num_of_working_ip = 10 # количество рабочих айпи в подсети queue = {} write_claster = [] running = True masks = {} def test_mask(mask): count = 0 for ip in ipaddress.ip_network(mask): response = tcpping(str(ip), timeout=1, count=1, port=ping_port).is_alive if response: count += 1 if count >= num_of_working_ip: with open(output_file, "a") as f2: txt2write = mask + " up" f2.write(txt2write + "\n") masks[mask] = count print(mask, "up") exit() if count < num_of_working_ip: with open(output_file, "a") as f2: txt2write = mask + " down" f2.write(txt2write + "\n") print(mask, "down") with open(input_file, "r") as f: ip_adresses = f.read().split("\n") for i in ip_adresses: masks.update({i: 0}) threading.Thread(target=test_mask, args=(i,)).start() Python import ipaddress import threading from main import output_file from tcppinglib import tcpping ping_port = 443 # порт для пинга input_file = "input.txt" # файл с масками output_file = "output.txt" # файл для вывода результата num_of_working_ip = 10 # количество рабочих айпи в подсети queue = {} write_claster = [] running = True masks = {} def test_mask(mask): count = 0 for ip in ipaddress.ip_network(mask): response = tcpping(str(ip), timeout=1, count=1, port=ping_port).is_alive if response: count += 1 if count >= num_of_working_ip: with open(output_file, "a") as f2: txt2write = mask + " up" f2.write(txt2write + "\n") masks[mask] = count print(mask, "up") exit() if count < num_of_working_ip: with open(output_file, "a") as f2: txt2write = mask + " down" f2.write(txt2write + "\n") print(mask, "down") with open(input_file, "r") as f: ip_adresses = f.read().split("\n") for i in ip_adresses: masks.update({i: 0}) threading.Thread(target=test_mask, args=(i,)).start()