Python get free network port

Python script to get a free network port: getfreeport.py.

#!/usr/bin/env python3
"""
This Python script returns a free network port.
Optionally, on Linux only and requiring `sudo` specify the network interface.
"""
import socket


SO_BINDTODEVICE=25
# https://stackoverflow.com/questions/8437726/can-python-select-what-network-adapter-when-opening-a-socket

def freeport(iface=None):
    s = socket.socket()

    if iface: # Linux only, requires sudo
        s.setsockopt(socket.SOL_SOCKET, SO_BINDTODEVICE, bytes(iface,'utf8'))

    s.bind(('',0))
    port = s.getsockname()[1]
    s.close() #slight race condition

    return port

if __name__ == '__main__':
    from argparse import ArgumentParser
    p = ArgumentParser()
    p.add_argument('-i','--iface',help='network interface to use (requires Linux and sudo)')
    p = p.parse_args()

    port = freeport(p.iface)

    print(port)