def general_info(self):
"""
Return IP in bits, ip_type (ie: private, multicast, loopback,etc..), time updated/returned and version for an IP Address
>>> from ipinformation import IPInformation
>>> from pprint import pprint
>>> pprint( IPInformation(ip_address='8.8.8.8').general_info() )
{'general': {'bits': '00001000000010000000100000001000',
'type': 'public',
'updated': datetime.datetime(2016, 1, 16, 18, 7, 4, 288512),
'version': '4'}}
>>> pprint( IPInformation(ip_address='127.0.0.1').general_info() )
{'general': {'bits': '01111111000000000000000000000001',
'type': 'loopback',
'updated': datetime.datetime(2016, 1, 16, 18, 10, 6, 729149),
'version': '4'}}
"""
data = { 'general': { 'bits': None, 'type': None, 'updated': None, 'version': None} }
if not self.ISIP:
# print '"%s" is not a valid IP Address.' %self.ip_address
# logging_file.error( '"{0}" is not a valid IP Address.'.format(self.ip_address) )
return data
if netaddr.valid_ipv4( self.ip_address ): #IPv4 Address
ip_version = '4'
data['general'].update({'version':ip_version})
ip_bits = netaddr.IPAddress( self.ip_address ).bits().replace( '.', '' ) #Set the IP bits for searching by subnet
data['general'].update({'bits':ip_bits})
ip_addr = netaddr.IPAddress(self.ip_address)
if ip_addr.is_private():
ip_type = 'private'
elif ip_addr.is_multicast():
ip_type = 'multicast'
elif ip_addr.is_loopback():
ip_type = 'loopback'
elif ip_addr.is_netmask():
ip_type = 'netmask'
elif ip_addr.is_reserved():
ip_type = 'reserved'
elif ip_addr.is_link_local():
ip_type = 'link_local'
elif ip_addr.is_unicast():
ip_type = 'public'
else: #Unknown Type
ip_type = 'unknown'
logging_file.error( '"{0}" is an unknown IP Address.'.format(self.ip_address) )
elif netaddr.valid_ipv6( self.ip_address ): #IPv6 Address#TODO:Finish IPv6
ip_version = '6'
print 'Is IPv6'
return False
data['general'].update( { 'type': ip_type } )
data['general'].update( { 'updated': datetime.utcnow() } )
return data
评论列表
文章目录