如何優雅的使用telnet測試埠連通性

大雄45發表於2023-11-26

telnet 是TELNET協議的使用者介面,它支援兩種模式: 模式和會話模式,雖然telnet支援許多命令,但大部分情況下,我們只是使用它檢視目標主機是否開啟了某埠(預設是23)。
如何優雅的使用telnet測試埠連通性如何優雅的使用telnet測試埠連通性

其執行結果有兩種:
埠未開啟
$ telnet 101.199.97.65 62715
Trying 101.199.97.65...
telnet: connect to address 101.199.97.65: Connection refused

此時,命令已退出。

埠已開啟
$ telnet 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is '^]'.

此時命令未退出。
根據提示Escape character is '^]'.可知退出字元為'^]'(CTRL+])。此時輸入其它字元不能使其退出,CTRL+C都不行。輸入CTRL+]後會自動執行,進入命令模式:

^]
telnet>

此時再執行 quit才會真正退出。

telnet> quit
Connection closed.

其中,Escape character可以自定義,使用引數-e:

$ telnet -e p 101.199.97.65 62715   #使用p字元
Telnet escape character is 'p'.
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is 'p'.
p
telnet> quit
Connection closed.

即便如此,退出telnet還是麻煩。那麼,更進一步,如果出現在 中應該如何(優雅地)退出telnet呢?

方案

其實可以這樣:

輸出結果後立即退出
$ echo "" | telnet 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is '^]'.
Connection closed by foreign host.  #已成功連通埠並自動退出
$ echo "" | telnet 101.199.97.65 62715
Trying 101.199.97.65...
telnet: connect to address 101.199.97.65: Connection refused #埠未開放
輸出結果後延遲退出

sleep 2使得telnet輸出結果後,停留2秒後退出命令模式。

$ sleep 2 | telnet 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is '^]'.
Connection closed by foreign host.

使用這種方式可以將標準輸出和標準錯誤重定向到檔案中,透過分析檔案的內容來判斷埠開啟狀態。

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2980434/,如需轉載,請註明出處,否則將追究法律責任。

相關文章