Retrieving network mask in Python

前端 未结 8 958
不知归路
不知归路 2021-01-05 07:59

How would one go about retrieving a network device\'s netmask (In Linux preferably, but if it\'s cross-platform then cool)? I know how in C on Linux but I can\'t find a way

8条回答
  •  别那么骄傲
    2021-01-05 08:01

    Did you look here?

    http://docs.python.org/library/fcntl.html

    This works for me in python 2.5.2 on Linux. Was finishing it when Ben got ahead, but still here it goes (sad to waste the effort :-) ):

    vinko@parrot:~$ more get_netmask.py
    # get_netmask.py by Vinko Vrsalovic 2009
    # Inspired by http://code.activestate.com/recipes/439093/
    # and http://code.activestate.com/recipes/439094/
    # Code: 0x891b SIOCGIFNETMASK
    
    import socket
    import fcntl
    import struct
    import sys
    
    def get_netmask(ifname):
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x891b, struct.pack('256
    s',ifname))[20:24])
    
    if len(sys.argv) == 2:
            print get_netmask(sys.argv[1])
    vinko@parrot:~$ python get_netmask.py lo
    255.0.0.0
    vinko@parrot:~$ python get_netmask.py eth0
    255.255.255.0
    

提交回复
热议问题