栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

IP地址转换地址段

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

IP地址转换地址段

近期工作需要,写了一个地址转化的小脚本,方便找到对应IP归属地址段,对于运维人员有一定辅助作用

中间有些地方可以简化,不过也懒得改了…

如下:

# coding:utf-8

def transition_to_sub26(file):
    with open(file, 'r', encoding='utf-8') as file:
        for ip in file:
            ip_end = ip.split(".")[3]
            ip_end = int(ip_end)

            def sub_net(ip_end):

                if ip_end < 64:
                    return "0/26"
                elif ip_end < 128:
                    return "64/26"
                elif ip_end < 192:
                    return "128/26"
                else:
                    return "192/26"

            res = sub_net(ip_end)
            # print(res)

            ip_join = ".".join(ip.split(".")[0:3])
            # print(ip_join)	#10.41.0
            ip_sub = ip_join + "." + res
            # return ip_sub
            print(ip_sub)  # 10.41.0.64/26
            with open("IP地址转换结果(26位).txt", 'a+', encoding='utf-8') as file1:
                file1.write(ip_sub + "n")


def transition_to_sub28(file):
    with open(file, 'r', encoding='utf-8') as file:
        for ip in file:
            ip_end = ip.split(".")[3]
            ip_end = int(ip_end)

            def sub_net(ip_end):

                if ip_end < 16:
                    return "0/28"
                elif ip_end < 32:
                    return "16/28"
                elif ip_end < 48:
                    return "32/28"
                elif ip_end < 64:
                    return "48/28"
                elif ip_end < 80:
                    return "64/28"
                elif ip_end < 96:
                    return "80/28"
                elif ip_end < 112:
                    return "96/28"
                elif ip_end < 128:
                    return "112/28"
                elif ip_end < 144:
                    return "128/28"
                elif ip_end < 160:
                    return "144/28"
                elif ip_end < 176:
                    return "160/28"
                elif ip_end < 192:
                    return "176/28"
                elif ip_end < 208:
                    return "192/28"
                elif ip_end < 224:
                    return "208/28"
                elif ip_end < 240:
                    return "224/28"
                else:
                    return "240/28"

            res = sub_net(ip_end)
            # print(res)

            ip_join = ".".join(ip.split(".")[0:3])
            # print(ip_join)	#10.41.0
            ip_sub = ip_join + "." + res
            print(ip_sub)  # 10.41.0.64/26
            with open("IP地址转换结果(28位).txt", 'a+', encoding='utf-8') as file2:
                file2.write(ip_sub + "n")


if __name__ == '__main__':
    file = input("请输入IP地址文件路径:" + "n")
    input_result = input("请输入需要转换的地址段,【1】代表转化为26位,【2】代表转化为28位:" + "n")
    if input_result == "1":
        transition_to_sub26(file)
    if input_result == "2":
        transition_to_sub28(file)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号