美文网首页IS-IS网络
2019-05-21 三种方法使用Python脚本从IP地址生成

2019-05-21 三种方法使用Python脚本从IP地址生成

作者: AK蜗牛 | 来源:发表于2019-05-20 08:09 被阅读0次

    上次我们说到,一般ISIS 的网络号通常看起来是这样: “49.0001.0912.0908.6001.00”, 其中“0912.0908.6001” 这一段,通常是把loopback地址先补足3位,再分成3段算出来,比如192.168.10.1, 先变成192.168.010.001,去掉“.”,再按4位分割则是: 1921.6801.0001,网络号就是“49.0001.1921.6801.0001.00”
    那么,现在有3种方法可以通过IP地址生成相应的ISIS网络号。
    1、已知IP地址段的情况下:

    def net_from_ip(ip):
        return '49.0001.0912.0908.6{:03d}.00'.format(int(ip.split('.')[3]))
    

    比如我要转换的地址段,是91.209.86.0/24, 按照计算规则,网络号的前几位都是相同的: “49.0001.0912.0908.6XXX.00,变量只有”XXX“,就是IP地址的最后部分补0之后生成的3位数,直接把IP地址的最后一个"."格式化即可。
    2、For循环

    def ip_net(argv): #转换IP地址到ISIS网络号
      ip = argv[1]
      ip_list = ip.split('.')
      for n in range(0,4):
        if len(ip_list[n]) == 3:
          pass
        if len(ip_list[n]) == 2:
          ip_list[n] = "0" + ip_list[n]
          print(ip_list[n])
        if len(ip_list[n]) == 1:
          ip_list[n] = "00" + ip_list[n]
          print(ip_list[n])
    
      net2 = ''.join(ip_list)
      net3 = "49.0001." + net2[0:4] + "." + net2[4:8] + "." + net2[8:12] + ".00"
      return(net3)
    

    这个是笨办法,原理是计算分割IP地址字符串,补0后再改写成ISIS网络号的格式。
    3、for 循环,但是根据key值计算value

    def ip_net():
        ip1 = input("Please input ip address:  ")
        ip_list = ip1.split('.')
        for k in range(0,len(ip_list)):
           # k = the key
            v = ip_list[k] # The value
            ip_list[k] = ("0"*(3-len(v)))+v
        net2 = ''.join(ip_list)
        net3 = "49.0001." + net2[0:4] + "." + net2[4:8] + "." + net2[8:12] + ".00"
        return(net3)
    

    第一种最简单,第三种更合理,个人觉得。

    相关文章

      网友评论

        本文标题:2019-05-21 三种方法使用Python脚本从IP地址生成

        本文链接:https://www.haomeiwen.com/subject/xkgrzqtx.html