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 a✔ddress 101.199.97.65: Conne↔≤ction refused
此時(shí),命令已退出。
端口已打開(kāi)
$ telnet 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is 'δ≠;^]'.
此時(shí)命令未退出。
根據提示Escape character is &∑™Ω#39;^]'.可(kě)知(zhī)退出字符為(wèi)'^™Ω]'(CTRL+])。此時(shí)輸÷≠♦•入其它字符不(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 &nbs¥γλp; #使用(yòng)p字符
Telnet escape character is 'p€Ω 9;.
Trying 101.199.97.65.•≈..
Connected to 101.199.97.65.
Escape character is 'p&©←#39;.
p
telnet> quit
Connection closed.
即便如(rú)此,退出telnet還(hái)是(shì) αγ麻煩。那(nà)麽,更進一(yī)步,如(rú)↓÷∞果出現(xiàn)在腳本中應該如(rú)何(優雅地(dì¥←))退出telnet呢(ne)?
方案
其實可(kě)以這(zhè)樣:
輸出結果後立即退出
$ echo "" | teln∞∑et 101.199.97.65 62715
Trying 101.199.97.65...
Connected to 101.199.97.65.
Escape character is §$39;^]'.
Connection closed by for§←eign host. #已成功連通→®(tōng)端口并自(zì)動退出
$ echo "" | telnet↑©↓÷ 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.9>™₩7.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)件(j÷☆iàn)的(de)內(nèi)容來(lái)判斷端口打開(∞∏✘×kāi)狀态。