由於某些原因,你可能經常需要查詢埠名稱和埠號。如果是這樣,你很幸運。今天,在這個簡短的教學中,我們將看到在 Linux 系統中最簡單、最快捷的查詢伺服器端口號的方法。可能有很多方法可以做到,但我目前只知道以下三種方法。請繼續閱讀。
要使用 grep
命令在 Linux 中查詢指定服務的預設埠號,只需執行:
$ grep <port> /etc/services
例如,要查詢 SSH 服務的預設埠,只需執行:
$ grep ssh /etc/services
就這麼簡單。此命令應該適用於大多數 Linux 發行版。以下是我的 Arch Linux 測試機中的範例輸出:
ssh 22/tcpssh 22/udpssh 22/sctpsshell 614/tcpsshell 614/udpnetconf-ssh 830/tcpnetconf-ssh 830/udpsdo-ssh 3897/tcpsdo-ssh 3897/udpnetconf-ch-ssh 4334/tcpsnmpssh 5161/tcpsnmpssh-trap 5162/tcptl1-ssh 6252/tcptl1-ssh 6252/udpssh-mgmt 17235/tcpssh-mgmt 17235/udp
正如你在上面的輸出中所看到的,SSH 服務的預設埠號是 22。
讓我們找到 Apache Web 伺服器的埠號。為此,命令是:
$ grep http /etc/services# http://www.iana.org/assignments/port-numbershttp 80/tcp www www-http # WorldWideWeb HTTPhttp 80/udp www www-http # HyperText Transfer Protocolhttp 80/sctp # HyperText Transfer Protocolhttps 443/tcp # http protocol over TLS/SSLhttps 443/udp # http protocol over TLS/SSLhttps 443/sctp # http protocol over TLS/SSLgss-http 488/tcpgss-http 488/udpwebcache 8080/tcp http-alt # WWW caching servicewebcache 8080/udp http-alt # WWW caching service[...]
FTP 埠號是什麼?這很簡單!
$ grep ftp /etc/servicesftp-data 20/tcpftp-data 20/udp# 21 is registered to ftp, but also used by fspftp 21/tcpftp 21/udp fsp fspdtftp 69/tcp[...]
如你所見,上面的命令顯示指定搜尋詞 “ssh”、“http” 和 “ftp” 的所有埠名稱和數位。這意味著,你將獲得與給定搜尋詞匹配的所有埠名稱的相當長的輸出。
但是,你可以使用 getent
命令精確輸出結果,如下所示:
$ getent services sshssh 22/tcp$ getent services httphttp 80/tcp www www-http$ getent services ftpftp 21/tcp
如果你不知道埠名稱,但是知道埠號,那麼你只需將埠名稱替換為數位:
$ getent services 80http 80/tcp
要顯示所有埠名稱和埠號,只需執行:
$ getent services
Whatportis 是一個簡單的 Python 指令碼,來用於查詢埠名稱和埠號。與上述命令不同,此程式以漂亮的表格形式輸出。
確保已安裝 pip 包管理器。如果沒有,請參考以下連結。
安裝 pip 後,執行以下命令安裝 Whatportis 程式。
$ pip install whatportis
現在,你可以找到與服務關聯的埠,如下所示。
$ whatportis ssh$ whatportis ftp$ whatportis http
我的 CentOS 7 伺服器的範例輸出:
在 Linux 中查詢服務的埠號
如果你不知道服務的確切名稱,請使用 –like
標誌來顯示相關結果。
$ whatportis mysql --like
上述命令幫助你查詢與服務關聯的埠。你還可以找到與埠號相關聯的服務,如下所示。
$ whatportis 993
你甚至可以以 JSON 格式顯示結果。
$ whatportis 993 --json
有關更多詳細資訊,請參閱 GitHub 倉庫。
就是這些了。你現在知道了如何使用三種簡單方法在 Linux 中查詢埠名稱和埠號。如果你知道任何其他方法/命令,請在下面的評論欄告訴我。我會檢視並更相應地更新本指南。