PythonTip >> 博文 >> chinaunix

用python获取本机IP地址[in linux]

zihua 2014-01-13 18:01:33 点击: 878 | 收藏


用python获取本机IP地址[in  Linux]

方法一:【最好的一个,<推荐>
可以不必知道使用的是哪个网络设备,十分方便的获得正在使用的IP地址!
#!/usr/bin/env python
import socket
def get_my_ip():
    """
    Returns the actual ip of the local machine.
    This code figures out what source address would be used if some traffic
    were to be sent out to some well known address on the Internet. In this
    case, a Google DNS server is used, but the specific address does not
    matter much.  No traffic is actually sent.
    """
    try:
        csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        csock.connect(('8.8.8.8', 80))
        (addr, port) = csock.getsockname()
        csock.close()
        return addr
    except socket.error:
        return "127.0.0.1"

if __name__ == "__main__":
    print get_my_ip()

方法二:【最灵活的一个】
需要指明此时正在使用的网络设备名!
#!/usr/bin/env python

import socket
import fcntl
import struct
 
def get_ip_address(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15])
    )[20:24])

Local_ip=get_ip_address("xxx")#xxx表示网络设备名
原文链接:http://blog.chinaunix.net/uid-8874157-id-3890771.html

作者:zihua | 分类: chinaunix | 标签: python | 阅读: 878 | 发布于: 2014-01-13 18时 |