A Command To Search Port Names And numbers - Whatportis
It often happens that we need to find the default port number for a specific service, or what service is normally listening on a given port.
Usage
This tool allows you to find what port is associated with a service:
$ whatportis redis
+-------+------+----------+---------------------------------------+
| Name | Port | Protocol | Description |
+-------+------+----------+---------------------------------------+
| redis | 6379 | tcp | An advanced key-value cache and store |
+-------+------+----------+---------------------------------------+
$ whatportis 5432
+------------+------+----------+---------------------+
| Name | Port | Protocol | Description |
+------------+------+----------+---------------------+
| postgresql | 5432 | tcp | PostgreSQL Database |
| postgresql | 5432 | udp | PostgreSQL Database |
+------------+------+----------+---------------------+
--like
option: $ whatportis mysql --like
+----------------+-------+----------+-----------------------------------+
| Name | Port | Protocol | Description |
+----------------+-------+----------+-----------------------------------+
| mysql-cluster | 1186 | tcp | MySQL Cluster Manager |
| mysql-cluster | 1186 | udp | MySQL Cluster Manager |
| mysql-cm-agent | 1862 | tcp | MySQL Cluster Manager Agent |
| mysql-cm-agent | 1862 | udp | MySQL Cluster Manager Agent |
| mysql-im | 2273 | tcp | MySQL Instance Manager |
| mysql-im | 2273 | udp | MySQL Instance Manager |
| mysql | 3306 | tcp | MySQL |
| mysql | 3306 | udp | MySQL |
| mysql-proxy | 6446 | tcp | MySQL Proxy |
| mysql-proxy | 6446 | udp | MySQL Proxy |
| mysqlx | 33060 | tcp | MySQL Database Extended Interface |
+----------------+-------+----------+-----------------------------------+
Installation
$ pip install whatportis
JSON output
You can display the results as JSON, using the
--json
option : $ whatportis 5432 --json
[
{
"description": "PostgreSQL Database",
"protocol": "tcp",
"name": "postgresql",
"port": "5432"
},
{
"description": "PostgreSQL Database",
"protocol": "udp",
"name": "postgresql",
"port": "5432"
}
]
REST API
Whatportis can also be started as a RESTful API server:
$ whatportis --server localhost 8080
* Running on http://localhost:8080/ (Press CTRL+C to quit)
$ curl http://localhost:8080/ports
"ports": [
{
"description": "Description",
"name": "Service Name",
"port": "Port Number",
"protocol": "Transport Protocol"
},
...
]
$ curl http://localhost:8080/ports/3306
{
"ports": [
[
"mysql",
"3306",
"tcp",
"MySQL"
],
[
"mysql",
"3306",
"udp",
"MySQL"
]
]
}
$ curl http://localhost:8080/ports/mysql?like
{
"ports": [
[
"mysql-cluster",
"1186",
"tcp",
"MySQL Cluster Manager"
],
[
"mysql-cluster",
"1186",
"udp",
"MySQL Cluster Manager"
],
...
}
Notes
- "Why not use
grep
" ? Simply because I want a portable command that display the output in a nice format (a pretty table)./etc/services - The tool uses the Iana.org website to get the official list of ports. A private script has been created to fetch regularly the website and update the ports.json file. For this reason, an
update
command will be created in a future version.