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


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.

使用這種方式可以將標准輸出和標准錯誤重定向到文件中,通過分析文件的內容來判斷端口打開狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM