情景l(fā)inux的實(shí)例詳解

情景linux–在腳本中如何優(yōu)雅地退出telnet

情景

telnet命令是telnet協(xié)議的用戶接口,它支持兩種模式:命令模式會話模式。雖然telnet支持許多命令,但大部分情況下,我們只是使用它查看目標(biāo)主機(jī)是否打開了某端口(默認(rèn)是23)。

其執(zhí)行結(jié)果有兩種:

  • 端口未打開

$ 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 '^]'.

此時命令未退出。
根據(jù)提示Escape character is ‘^]’.可知退出字符為’^]’(CTRL+])。此時輸入其它字符不能使其退出,CTRL+C都不行。輸入CTRL+]后會自動執(zhí)行,進(jìn)入命令模式:

^]
telnet>

此時再運(yùn)行quit才會真正退出。

telnet> quit
Connection closed.

其中,Escape character可以自定義,使用參數(shù)-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還是麻煩。那么,更進(jìn)一步,如果出現(xiàn)在腳本中應(yīng)該如何(優(yōu)雅地)退出telnet呢?

方案

其實(shí)可以這樣:

  • 輸出結(jié)果后立即退出

    $ 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
  • 輸出結(jié)果后延遲退出
    sleep 2使得telnet輸出結(jié)果后,停留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.

使用這種方式可以將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤重定向到文件中,通過分析文件的內(nèi)容來判斷端口打開狀態(tài)。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享