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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值