How to get the physical interface IP address from an interface

前端 未结 3 1177
孤城傲影
孤城傲影 2020-11-29 03:56

What I have done so far, using PyQt classes:

all_Addresses = QNetworkInterface.allAddresses()    #list-of-QHostAddress

for addr in all_Addresses:
    print(         


        
3条回答
  •  失恋的感觉
    2020-11-29 04:48

    Uses the Linux SIOCGIFADDR ioctl to find the IP address associated with a network interface, given the name of that interface, e.g. "eth0". The address is returned as a string containing a dotted quad.

    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])
    
    >>> get_ip_address('lo')
    '127.0.0.1'
    
    >>> get_ip_address('eth0')
    '38.113.228.130'
    

    For more

提交回复
热议问题