Get one available local port on both windows and Linux using Python
# coding=utf-8"""
Get available local port
"""import os
import random
defgetPort(times=0):
availabel_local_ports = []
tt = random.randint(15000,20000)
if times <= 0:
# windowsimport platform
system = platform.system().lower()
if system == "windows":
cmdStr = "netstat -n"elif system == "linux":
cmdStr = "netstat -tulnp"
printStr = os.popen(cmdStr).read()
if system == "windows":
port_info_list = printStr.split("\n")[4:]
for portarr in port_info_list:
try:
availabel_local_ports.append(int(portarr.strip().split(' ')[4].split(":")[-1]))
except Exception as e:
# print("Ignore some bad format string")continueelif system =="linux":
port_info_list = printStr.split("\n")[2:]
for portarr in port_info_list:
try:
availabel_local_ports.append(int(portarr.strip().split(' ')[15].split(":")[-1]))
except Exception as e:
# print("Ignore some bad format string")continueif tt notin availabel_local_ports:
return tt
else:
times += 1
getPort(times)
if __name__ == "__main__":
print(getPort())
# coding=utf-8""" Get available local port"""import osimport randomdef getPort(times=0): availabel_local_ports = [] tt = random.randint(15000,20000) if times <= 0: # windows