From 28704de846e7858742980d355b391c8ee2ad2a20 Mon Sep 17 00:00:00 2001 From: LeterTW Date: Sat, 3 Aug 2024 09:39:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96IP=E6=AE=B5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=EF=BC=8C=E6=9B=B4=E6=96=B0IP=E6=AE=B5?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E7=BB=93=E6=9E=9C=20(#5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update ipdb.txt * Create main_2.py 优化IP段合并程序 * Update ipdb.txt 去除非中国所属IP地址 * Update ipdb.txt 新增镇江联通1IP段 --- ipdb.txt | 63 ++++++++++++++++++++----------------------------------- main_2.py | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 40 deletions(-) create mode 100644 main_2.py diff --git a/ipdb.txt b/ipdb.txt index 2e61ba0..e7af7e0 100644 --- a/ipdb.txt +++ b/ipdb.txt @@ -1,46 +1,9 @@ -# IP段清单 -104.247.192.0/24 -107.149.204.0/24 -107.165.206.0/24 -111.121.27.0/24 -113.231.202.0/24 -116.179.152.0/24 -118.81.184.0/23 -118.81.185.0/24 -122.195.22.0/24 -124.132.156.0/24 -124.163.207.0/24 -124.163.208.0/24 -124.163.220.0/24 -153.101.51.0/24 -153.101.64.0/24 -153.101.65.0/24 -173.245.76.0/24 -175.42.154.0/24 -175.42.155.0/24 -175.44.72.0/24 -175.44.73.0/24 -183.185.14.0/24 -183.224.221.0/24 -211.90.146.0/24 -211.90.147.0/24 -211.93.170.0/24 -220.248.203.0/24 -221.204.0.0/15 -221.205.0.0/15 -221.205.168.0/23 -221.205.169.0/24 -221.6.171.0/24 -221.7.251.0/24 -221.90.0.0/15 -222.189.163.0/24 27.221.70.0/24 +36.5.81.0/24 +36.35.38.0/24 36.151.55.0/24 36.249.150.0/24 -36.35.38.0/24 -36.5.81.0/24 39.74.239.0/24 -47.76.99.0/24 58.220.40.0/24 60.190.128.0/24 60.220.182.0/24 @@ -51,4 +14,24 @@ 61.160.233.0/24 61.179.15.0/24 61.241.177.0/24 -84.247.148.0/24 \ No newline at end of file +111.121.27.0/24 +113.231.202.0/24 +116.179.152.0/24 +118.81.184.0/23 +122.195.22.0/24 +124.132.156.0/24 +124.163.207.0/23 +124.163.220.0/24 +153.101.51.0/24 +153.101.64.0/23 +153.101.141.0/24 +175.42.154.0/23 +175.44.72.0/23 +183.185.14.0/24 +183.224.221.0/24 +211.90.146.0/23 +211.93.170.0/24 +220.248.203.0/24 +221.6.171.0/24 +221.7.251.0/24 +222.189.163.0/24 diff --git a/main_2.py b/main_2.py new file mode 100644 index 0000000..292ec19 --- /dev/null +++ b/main_2.py @@ -0,0 +1,49 @@ +import ipaddress +import sys + +def cidr_to_range(cidr): + network = ipaddress.ip_network(cidr) + return (network.network_address, network.broadcast_address) + +def range_to_cidr(start, end): + return [str(cidr) for cidr in ipaddress.summarize_address_range(start, end)] + +def merge_cidrs(cidrs): + ranges = sorted(cidr_to_range(cidr) for cidr in cidrs) + merged = [] + for start, end in ranges: + if not merged or start > merged[-1][1] + 1: + merged.append([start, end]) + else: + merged[-1][1] = max(merged[-1][1], end) + + result = [] + for start, end in merged: + result.extend(range_to_cidr(start, end)) + return result + +def main(): + print("请输入IP段列表(每行一个CIDR格式的IP段):") + print("输入完成后,请按Ctrl+D (Unix/Linux/Mac) 或 Ctrl+Z 然后按Enter (Windows) 来结束输入") + + input_cidrs = [] + for line in sys.stdin: + cidr = line.strip() + try: + ipaddress.ip_network(cidr) + input_cidrs.append(cidr) + except ValueError: + print(f"无效的CIDR格式: {cidr},已忽略", file=sys.stderr) + + if not input_cidrs: + print("未输入有效的IP段", file=sys.stderr) + return + + merged_cidrs = merge_cidrs(input_cidrs) + + print("\n合并后的IP段:") + for cidr in merged_cidrs: + print(cidr) + +if __name__ == "__main__": + main()