我正在尋找一種快速,簡(jiǎn)單的方法來從Shell腳本內(nèi)部正確測(cè)試遠(yuǎn)程服務(wù)器上是否打開了給定的TCP端口。我已經(jīng)用telnet命令做到了,當(dāng)打開端口時(shí),它可以正常工作,但是當(dāng)端口不打開時(shí),它似乎并沒有超時(shí),而只是掛在那里。這是一個(gè)示例:l_TELNET=`echo "quit" | telnet $SERVER $PORT | grep "Escape character is"`if [ "$?" -ne 0 ]; then echo "Connection to $SERVER on port $PORT failed" exit 1else echo "Connection to $SERVER on port $PORT succeeded" exit 0fi我或者需要一種更好的方法,或者是一種強(qiáng)制telnet超時(shí)的方法(例如,如果它在8秒內(nèi)沒有連接),然后返回我可以在Shell中捕獲的內(nèi)容(返回代碼或stdout中的字符串)。我知道Perl方法,該方法使用IO :: Socket :: INET模塊并編寫了成功的腳本來測(cè)試端口,但如果可能的話,希望避免使用Perl。注意:這就是我的服務(wù)器正在運(yùn)行的(我需要從中運(yùn)行)SunOS 5.10 Generic_139556-08 i86pc i386 i86pc
3 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
正如B. Rhodes指出的那樣,nc將完成此工作。一種更緊湊的使用方式:
nc -z <host> <port>
這樣nc只會(huì)檢查端口是否打開,成功則以0退出,失敗則以1退出。
快速互動(dòng)檢查(5秒超時(shí)):
nc -z -v -w5 <host> <port>
- 3 回答
- 0 關(guān)注
- 994 瀏覽
添加回答
舉報(bào)
0/150
提交
取消