命令行探測服務器某一端口是否打開

緣起

檢測遠程服務器的某一個端口(尤其是 tcp )是否已經被打開,這貌似是 SA 們排錯時遇到的一個常見場景,

方案

telnet

最早,我常用的方案是使用 telnet。估計那時也只有 telnet 可用:)

yum -y install telnet;
telnet baidu.com 80;

上面的命令正確連上以后會有輸出:

Trying 180.149.132.47...
Connected to baidu.com.
Escape character is '^]'.

nc

后來,發現還有 nc,網絡工具中的瑞士軍刀:)

yum -y install nc;
nc -vz baidu.com 80;

成功后會提示:

Connection to baidu.com 80 port [tcp/http] succeeded!

仔細看上面的這句輸出提示,看出來什么名堂沒有?對啦:“tcp/http”!這么說 nc 還能檢測 udp 端口不成?man 了一下,還真可以:

nc -vz -u 10.0.0.1 53

成功以后系統提示:

Connection to 10.0.0.1 53 port [udp/domain] succeeded!

bash

再后來,中老年如我,終于返璞歸真,發現其實 bash 就直接支持這種檢測。OK,廢話少說,直接看命令:

man bash

找到這幾句提示:

          /dev/tcp/host/port
                 If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a TCP  connection to the corresponding socket.
          /dev/udp/host/port
                 If  host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a UDP connection to the corresponding socket.

故而測試命令很好玩兒:

>/dev/tcp/baidu.co/80;echo $?;

當成功連上 baidu.com 的 tcp 80 端口的時候,返回 0。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 簡介 用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者...
    保川閱讀 5,990評論 1 13
  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc閱讀 2,936評論 0 0
  • 照片、衣裳、誘惑的肉體, 心跳加速、呼吸急促, 熱汗、肌膚、迷幻的燭火, 摩擦不斷,身體抽搐, 性感的尤物、香煙、...
    地球最后的夜晚閱讀 421評論 -1 1
  • 內容提要: MJExtension是一套字典和模型之間互相轉換的超輕量級框架。字典轉model是最典型的一個運用場...
    iOS俱哥閱讀 858評論 1 1
  • 昨天晚上和老譚一起回家 好開心啊好開心 車急剎 有一個小妹妹抓住了我的胳膊 謝謝我粗壯的胳膊給了你穩定的力量 中國...
    只是找一個地方碼子_閱讀 227評論 0 0