Utility that helps with local TCP ports managment. It can find an unused TCP localhost port and remember the association.
Project description
port-for is a command-line utility and a python library that helps with local TCP ports managment.
It can find an unused TCP localhost port and remember the association.
This can be useful when you are installing a stack of software with multiple parts needing port numbers.
There are several rules port-for is trying to follow to find and return a new unused port:
Port must be unused: port-for checks this by trying to connect to the port and to bind to it.
Port must be IANA unassigned and otherwise not well-known: this is acheived by maintaining unassigned ports list (parsed from IANA and Wikipedia).
Port shouldn’t be inside ephemeral port range. This is important because ports from ephemeral port range can be assigned temporary by OS (e.g. by machine’s IP stack) and this may prevent service restart in some circumstances. gimme_port doesn’t return ports from ephemeral port ranges configured at the current machine.
Other heuristics are also applied: port-for tries to return a port from larger port ranges; it also doesn’t return ports that are too close to well-known ports.
Installation
System-wide:
sudo easy_install port-for
Script usage
port-for <foo> script finds an unused port and associates it with <foo>. Subsequent calls will return the same port number.
This utility doesn’t actually bind the port or otherwise prevents the port from being taken by another software. It however tries to select a port that is less likely to be used by another software (and that is unused at the time of calling of course). Utility also makes sure that port-for bar won’t return the same port as port-for foo on the same machine.
$ sudo port-for foo 37987 $ sudo port-for foo 37987
You may also want to prefix your app name:
$ sudo port-for instance1.apache 35456
Please note that port-for script requires read and write access to /etc/port-for.conf so sudo may be necessary in order to run it.
Library usage
>>> import port_for >>> port_for.select_random() 37774 >>> port_for.select_random() 48324 >>> 80 in port_for.available_good_ports() False
Dig into source code for more.
Contributing
Development happens at github and bitbucket:
The issue tracker is at github: https://github.com/kmike/port-for/issues/new
In order to run tests make sure you have tox installed, then type
tox
from the source checkout.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file port-for-0.1.tar.gz
.
File metadata
- Download URL: port-for-0.1.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96ea5be645f592afb9a1e757e051e2a30c6aee692f5a0cad9361c7b13b6a8f9c |
|
MD5 | 75b32b5069d4969c69d0dbcf4a6e6044 |
|
BLAKE2b-256 | 39b4777176f849fcd7f677f1ed06fc01dbd193fbd8e5c58d6c8da145ed224fca |