johnmahugu

python check ports

Jun 3rd, 2015
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. import socket
  2. import errno
  3. import contextlib
  4.  
  5. reserved_ports = set()
  6.  
  7. def get_open_port(lowest_port = 0, highest_port = None, bind_address = '', *socket_args, **socket_kwargs):
  8. if highest_port is None:
  9. highest_port = lowest_port + 100
  10. while lowest_port < highest_port:
  11. if lowest_port not in reserved_ports:
  12. try:
  13. with contextlib.closing(socket.socket(*socket_args, **socket_kwargs)) as my_socket:
  14. my_socket.bind((bind_address, lowest_port))
  15. this_port = my_socket.getsockname()[1]
  16. reserved_ports.add(this_port)
  17. return this_port
  18. except socket.error as error:
  19. if not error.errno == errno.EADDRINUSE:
  20. raise
  21. assert not lowest_port == 0
  22. reserved_ports.add(lowest_port)
  23. lowest_port += 1
  24. raise Exception('Could not find open port')
Advertisement
Add Comment
Please, Sign In to add comment