搜索端口名和端口号的命令
whatportis的Python项目详细描述
搜索服务的默认端口号是一项常见的任务。有些端口在/etc/services
文件中可用,但列表不完整,此解决方案不可移植。
whatportis是一个简单的工具,可以下载Iana.org数据库,并使用它来探索端口的正式列表。
用法
Whatportis允许您查找与服务关联的端口:
$ 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, udp | PostgreSQL Database | +------------+------+----------+---------------------+
您还可以通过添加--like
选项来搜索模式,而不必知道确切的名称:
$ whatportis mysql --like +----------------+-------+----------+-----------------------------------+ | Name | Port | Protocol | Description | +----------------+-------+----------+-----------------------------------+ | mysql-cluster |1186| tcp, udp | MySQL Cluster Manager || mysql-cm-agent |1862| tcp, udp | MySQL Cluster Manager Agent || mysql-im |2273| tcp, udp | MySQL Instance Manager || mysql |3306| tcp, udp | MySQL || mysql-proxy |6446| tcp, udp | MySQL Proxy || mysqlx |33060| tcp | MySQL Database Extended Interface | +----------------+-------+----------+-----------------------------------+
安装
$ pip install whatportis
数据库同步
whatportis使用本地json文件(~/.whatportis_db.json
)来探索端口列表。第一次使用将为您创建它,然后您可以使用--update
选项来同步它:
$ whatportis --update Previous database will be updated, do you want to continue? [y/N]: y Downloading https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv... Populating database... 14145 ports imported.
json输出
可以使用--json
选项将结果显示为json:
$ whatportis 5432 --json [{"name": "postgresql", "port": "5432", "protocol": "tcp, udp", "description": "PostgreSQL Database"}]
rest api
whatportis也可以作为restful api服务器启动。默认情况下,此功能未启用,您必须安装额外的软件包:
$ pip install whatportis[server] $ whatportis --server localhost 8080 * Serving Flask app "whatportis.server"(lazy loading) * Environment: prod * Debug mode: off * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
端点是整个列表的/ports
(可以很长)和搜索特定端口的/ports/<search>
:
$ curl http://127.0.0.1:8080/ports/3306 {"ports":[{"description":"MySQL","name":"mysql","port":"3306","protocol":"tcp, udp"}]} $ curl http://localhost:8080/ports/redis {"ports":[{"description":"An advanced key-value cache and store","name":"redis","port":"6379","protocol":"tcp"}]}
可以使用?like
参数搜索模式。