python获取本机IP、探测指定URL的IP等信息、生成格式化时间

    今天在写程序的时候遇上几个需求就是获取指定URL的一些信息,包括它的IP地址、城市、国家等信息,在文档保存的时候往往需要使用有标识意义的文件名,在这里使用自动生成的格式化时间的策略来保存,对于系统日志等应用来说是极为便利的,这样在查找错误的时候我们可以很快地定位到出错文件的位置,然后进行一些列的处理,好了这里就不多说了直接看代码就行:

#!/usr/bin/python
#-*-coding:utf-8-*-
import ip2loc
import time
import socket
import fcntl
import struct

def get_format_time():
    '''
    生成格式化当前时间, 例如: 2016-04-01_22-40-52
    '''
    return time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime(time.time()))


def getLocalIp(ifname="eth0"):
    '''
    获得本机IP
    '''
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(sock.fileno(), 0x8915,  # SIOCGIFADDR
                                        struct.pack('256s', ifname[:15]))[20:24])


def transfer_time_reformat(goal_time):
    '''
    将格式化时间转化为时间戳返回
    '''
    return time.mktime(time.strptime(goal_time, '%Y-%m-%d_%H-%M-%S'))


def dns_check(url):
    '''
    探测URL的IP
    '''
    if url.find("//") != -1:
        url = url[url.find("//") + 2:]
    if url[-1] == '/':
        url = url[:-1]
    try:
        ip = gethostbyname(url)
    except:
        ip = ''
    return ip


def get_ip_location(url):
    '''
    查找指定URL的IP
    '''
    ip_location = {}
    ip_location['ip'] = dns_check(url)
    ip2loc_result = ip2loc.find(url).split('\t')
    if ip2loc_result[0] == 'illegal IP address':
        ip_location['country'] = ''
        ip_location['city'] = ''
    else:
        ip_location['country'] = ip2loc_result[0]
        if len(ip2loc_result) == 2 and ip2loc_result[0] != ip2loc_result[1]:
            ip_location['city'] = ip2loc_result[1]
        else:
            ip_location['city'] = ''
    return ip_location

if __name__ == "__main__":
    time_now=get_format_time()
    print '格式化当前时间:',time_now
    local_ip=getLocalIp(ifname="eth0")
    print '获得本机IP:',local_ip
    time_trans = transfer_time_reformat(time_now)
    print '格式化时间转化为时间:',time_trans
    baidu_ip=get_ip_location('http://www.baidu.com')
    print '查找指定URL的IP',baidu_ip

输出结果如下:

格式化当前时间: 2017-04-12_15-39-25
获得本机IP: 172.***.***.***
格式化时间转化为时间: 1491982765.0
查找指定URL的IP {'ip': '', 'city': '', 'country': ''}

本机IP这里是自己涂改了一下,使用程序的确是可以获取本机IP的,感兴趣的可以拿去试试哈

展开阅读全文

没有更多推荐了,返回首页