Shell
如何創建 TCP 偵聽器?
**簡介:**我創建了一個 bash 函式,該函式能夠檢查埠是否可用,如果為 false,則將其遞增 1 直到某個最大埠號。例如,如果埠 500 不可用,則將檢查 501 的可用性,直到 550。
**目標:**為了測試這個 bash 功能,我需要創建一系列處於 LISTEN 狀態的埠。
嘗試:在 Windows 上,可以使用以下 PowerShell 命令創建 LISTEN 埠:
PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234 PS C:\Users\u> $listener.Start(); PS C:\Users\u> netstat -nat | grep 1234 TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost PS C:\Users\u> $listener.Stop(); PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u>
基於此,我試圖考慮一個可以在 CentOS 上執行相同操作的命令,但我不知道為什麼,我開始使用 Google 卻沒有找到解決此問題的解決方案。
預期答案:我將接受並支持包含能夠創建 LISTEN 埠的命令的答案,一旦命令執行,埠應保持 LISTEN 狀態,即:
[user@host ~]$ ss -nat | grep 500 LISTEN 0 128 *:500 *:*
您可以將
nc -l
其用作一種方法來做您正在尋找的事情。一些實現nc
有一個-L
允許連接持續存在的選項。如果您只需要它們一段時間,您可以
for
循環打開此命令並以這種方式打開一堆埠。如果您需要這些打開更長時間,您可以使用其中一個超級伺服器來創建守護程序。
您可以使用 Netcat 創建埠偵聽器。
root@ubuntu:~# nc -l 5000
您還可以使用 netstat 命令檢查埠是否打開。
root@vm-ubuntu:~# netstat -tulpen | grep nc tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 0 710327 17533/nc
你也可以用 nc 檢查:
Netcat 伺服器監聽器:
nc -l localhost 5000
網貓客戶端:
root@vm-ubuntu:~# nc -v localhost 5000 Connection to localhost 5000 port [tcp/*] succeeded!
如果埠未打開
root@vm-ubuntu:~# nc -v localhost 5000 nc: connect to localhost port 5000 (tcp) failed: Connection refused