how to get interface card names using python socket

Namaste Friends,





Today, I am going to share with you simple python codes, which can enumerate available interface name.



Introduction


To make a connection in a computer, first we have to choose a Network Interface from available source and at that time, This automatic function can help you to find the available Interface name so, that you can proceed further.


Before Sharing This Codes, I want to clear that These codes are not written by me.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import socket
import fcntl
import struct
import array


# # found on <http://code.activestate.com/recipes/439093/#c1>
# get all interface names
def all_interfaces():
    max_possible = 128  # arbitrary. raise if needed.

    bytes = max_possible * 32

    # Create a dummy socket
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


    names = array.array('B', '\0' * bytes)

    outbytes = struct.unpack('iL', fcntl.ioctl(
        s.fileno(),
        0x8912,  # SIOCGIFCONF
        struct.pack('iL', bytes, names.buffer_info()[0])
    ))[0]

    namestr = names.tostring()

    lst = []

    for i in range(0, outbytes, 40):
        name = namestr[i:i+16].split('\0', 1)[0]
        ip   = namestr[i+20:i+24]
        lst.append((name, socket.inet_ntoa(ip)))

    s.close()
    return lst



if __name__ == '__main__':
    print all_interfaces()


Credit Link: http://code.activestate.com/recipes/439093/


Share this

Related Posts

Previous
Next Post »