码迷,mamicode.com
首页 > 编程语言 > 详细

python编写IP地址与十进制IP转换脚本

时间:2016-07-12 23:34:12      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:ip地址   python   return   十进制   cover   

IP地址与十进制IP转换

#!/usr/bin/env python

#encoding=utf-8


import re

import sys

import os


def ten_to_two(ten_num):

    two_str = ‘‘


    while ten_num != 1:

        a = ten_num % 2

        two_str = two_str + str(a)

        ten_num = ten_num / 2

    else:

        two_str = two_str + str(1)

    

    two_str = two_str[::-1]

    if len(two_str) < 8:

        cover = (8 - len(two_str)) * str(0)

        two_str = cover + two_str


    return two_str


def two_to_ten(two_num):

    ten_int = 0

    indexlist = range(len(two_num))

    for i in indexlist:

        ten_int += int(two_num[i]) * 2 ** indexlist[-(i+1)]


    return str(ten_int)


def int_to_ipaddr(intnum):

    int_addr = int(intnum)

    twonum = ten_to_two(int_addr)


    if len(twonum) < 32:

        twonum = ‘0‘ * (32 - len(twonum)) + twonum


    ipaddr = ‘‘

    for j in range(0, 32, 8):

        k = j + 8

        if j == 24:

            ipaddr += two_to_ten(twonum[j:k])

        else:

            ipaddr += two_to_ten(twonum[j:k]) + ‘.‘


    return ipaddr


def ipaddr_to_int(ipaddress):

    iplist = ipaddress.split(‘.‘)

    ipstr = ‘‘

    for i in iplist:

        ipstr += ten_to_two (int(i))

    

    if ipstr.startswith(‘0‘):

        ipstr = re.sub(‘^0*‘, ‘‘, ipstr)


    tennum = two_to_ten(ipstr)

    return tennum




if len(sys.argv) < 2:

    print ‘No action specified.‘

    sys.exit()

elif len(sys.argv) == 2:

    if sys.argv[1].startswith(‘--‘):

        option = sys.argv[1][2:]

        if option == ‘version‘:

            print ‘Version 1.1‘

        elif option == ‘help‘:

            print ‘‘‘\

This program is used to convert the IP address.

\t-i ipaddress\n\t\tConvert the IP address.

\t\tlike ./iptrans.py 192.168.1.1

\t-if filename\n\t\tConvert the IP address‘s file.

\t\tlike ./iptrans.py ./ipfile 

\t-t int ipaddress\n\t\tConvert the int IP address.

\t\tlike ./iptrans.py 3232235777

\t-tf filename\n\t\tConvert the IP address‘s file.

\t\tlike ./iptrans.py ./intipfile

\t--help\n\t\tDisplay this help.

\t--version\n\t\tPrints the version number.‘‘‘

    else:

        print ‘Unknown option.‘

        sys.exit()

elif len(sys.argv) == 3:

    if sys.argv[1].startswith(‘-‘):

        option = sys.argv[1][1:]

        if option == ‘i‘:

            if sys.argv[2].count(‘.‘) == 3:

                ipaddress = sys.argv[2]

                intkey = ipaddr_to_int(ipaddress)

                print ‘%s\t%s‘ % (ipaddress, intkey)

            else:

                print ‘%s is error.‘ % sys.argv[2]

                sys.exit()

        elif option == ‘if‘:

            if os.path.isfile(sys.argv[2]) == True:

                filename = sys.argv[2] 

                f = open(filename, ‘r‘)

                for line in f:

                    ipaddress = line.replace(‘\n‘, ‘‘)

                    intkey = ipaddr_to_int(ipaddress)

                    print ‘%s\t%s‘ % (ipaddress, intkey)

            else:

                print ‘The %s is not exist.‘ % sys.argv[2]

                sys.exit()

        elif option == ‘t‘:

            intkey = sys.argv[2]

            if int(intkey) < 16777217:

                print ‘%s is error, must be great than 16777217‘ % sys.argv[2]

            else:

                ipaddress = int_to_ipaddr(intkey)

                print ‘%s\t%s‘ % (intkey, ipaddress)

        elif option == ‘tf‘:

            if os.path.isfile(sys.argv[2]) == True:

                filename = sys.argv[2] 

                f = open(filename, ‘r‘)

                for line in f:

                    intkey = line.replace(‘\n‘, ‘‘)

                    ipaddress = int_to_ipaddr(intkey)

                    print ‘%s\t%s‘ % (intkey, ipaddress)

            else:

                print ‘The %s is not exist.‘ % sys.argv[2]

                sys.exit()

        else:

            print ‘Unknown option.‘

            sys.exit()

else:

   print ‘Unknown option.‘

   sys.exit()


本文出自 “运维” 博客,请务必保留此出处http://gongniue.blog.51cto.com/7073997/1825854

python编写IP地址与十进制IP转换脚本

标签:ip地址   python   return   十进制   cover   

原文地址:http://gongniue.blog.51cto.com/7073997/1825854

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!