telnet指令是TELNET協定的使用者接口,它支援兩種模式:指令模式和會話模式。雖然telnet支援許多指令,但大部分情況下,我們只是使用它查看目標主機是否開啟了某個連接埠(預設是23)。
其執行結果有兩種:
連接埠未開啟
$ 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 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.
使用這種方式可以將標準輸出和標準錯誤重定向到檔案中,透過分析檔案的內容來判斷連接埠開啟狀態。
以上是情境linux的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!