telnet命令是(shì)TELNET協議(y&φì)的(de)用(yòng)戶接口,它支持兩種模式:命令模式和(hé)¥ε§'會(huì)話(huà)模式,雖然telnet支持許多(duō✘$★)命令,但(dàn)大(dà)部分(fēn)情況下(xià),我們隻是( ←shì)使用(yòng)它查看(kàn)目标主↑¶機(jī)是(shì)否打開(kāi)了(le)某端口(默♣↓φ認是(shì)23)。
其執行(xíng)結果有(yǒu)兩種:
端口未打開(kāi)
$ telnet 101.199.97.65 ±62715
Trying 101.199.97.65...
telnet: connect to addres¥βs 101.199.97.65: Connδ↕Ωection refused
此時(shí),命令已退出。
端口已打開(kāi)
$ telnet 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.£↔97.65.
Escape character is '^]®$←39;.
此時(shí)命令未退出。
根據提示Escape character is 'ε←^]'.可(kě)知(zhī)退出字符為(wèi)&✔€#39;^]'(CTRL+])。此時(s£∑↓βhí)輸入其它字符不(bù)能(néng)使其退出,CTRL+C都(dō©αu)不(bù)行(xíng)。輸入CTRL+]後₹←會(huì)自(zì)動執行(xíng),進ΩδΩ♣入命令模式:
^]
telnet>
此時(shí)再運行(xíng)quit才會(huì)真正退出。
telnet> quit
Connection closed.
其中,Escape character可(kě)以自(zì)定義γ→,使用(yòng)參數(shù)-e:
$ telnet -e p 101.199.97.65 62715 &<→→$nbsp; #使用(yòng)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.
即便如(rú)此,退出telnet還(hái)是(s ₽hì)麻煩。那(nà)麽,更進一(yī)步,如(r®'ú)果出現(xiàn)在腳本中應該如(rúδ&★)何(優雅地(dì))退出telnet呢(neγ )?
方案
其實可(kě)以這(zhè)樣:
輸出結果後立即退出
$ echo "" | telnet 101.199.±∏ 97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is ±∞9;^]'.
Connection closed by foreign host. &€nbsp;#已成功連通(tōng)端口并自(zì)動退出
$ echo "" | tel☆Ω'↓net 101.199.97.65 62715
Trying 101.199.97.65∏☆×£...
telnet: connect to address ♥αδ101.199.97.65: Connection refused #端口™α未開(kāi)放(fàng)
輸出結果後延遲退出
sleep 2使得(de)telnet輸出結果後,停留2秒≠☆>(miǎo)後退出命令模式。
$ 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.
使用(yòng)這(zhè)種方式可(kě)以将标準輸出和(h→≥πé)标準錯(cuò)誤重定向到(dào)文(wén)件(jiàn)中,通(tō πng)過分(fēn)析文(wén)件(ji £àn)的(de)內(nèi)容來(lái)判斷端≥<口打開(kāi)狀态。