中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何使用Shell腳本來查看端口是否打開?

2021-03-14    分類: 網(wǎng)站建設(shè)

我們在進(jìn)行服務(wù)器配置的時候,經(jīng)常要查看服務(wù)器的某個端口是否已經(jīng)開放。如果服務(wù)器只有一兩臺的話,那很好辦,只需要使用 nc 命令一個個查看即可。

但是,如果你的服務(wù)器是個集群,有很多臺呢?那如果還一個個手動去檢查的話,效率肯定是無比低下的,年底裁員名單里肯定有你。

在這種情況下,我們完全可以使用 Shell 腳本配合 nc 命令來達(dá)到我們的目的。而且,不管服務(wù)器有幾臺,需要檢查的端口有幾個,都可以實現(xiàn)這樣的目標(biāo)。

在本文里,我們用 Shell 腳本來實現(xiàn)兩個需求:

  • 掃描多臺服務(wù)器的一個端口是否打開
  • 掃描多臺服務(wù)器的多個端口是否打開

在開始之前,我們先來了解一下 nc 命令。

nc 命令簡介

nc 是英文單詞 netcat 的縮寫,它是通過使用 TCP 或 UDP 的網(wǎng)絡(luò)協(xié)議的連接來讀或?qū)憯?shù)據(jù),可以直接被第三方程序或腳本直接調(diào)用。

同時,它是一款功能非常強(qiáng)大的網(wǎng)絡(luò)調(diào)試工具,因為它可以創(chuàng)建幾乎所有你所需要的連接方式。

nc 工具主要有三種功能模式:連接模式、監(jiān)聽模式、通道模式。它的一般使用格式如下:

$ nc [-options] [HostName or IP] [PortNumber]

接下來,我們就用 Shell 腳本結(jié)合 nc 命令來實現(xiàn)我們的兩個需求。

1. 掃描多臺服務(wù)器的一個端口是否打開

在這里,我們先把需要查詢的所有服務(wù)器地址全部放在一個 server-list.txt 文件里,每個地址單獨一行,如下:

# cat server-list.txt
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7

然后,我們再用 for 循環(huán)依次掃描 server-list.txt 里對應(yīng)服務(wù)器的端口是否打開。在這里,我們掃描 22 端口是否打開。

# vi port_scan.sh

#!/bin/sh
for server in `more server-list.txt`
do
#echo $i
nc -zvw3 $server 22
done

最后,我們給這個腳本賦予可執(zhí)行權(quán)限即可。

$ chmod +x port_scan.sh

之后,我們就可以用這個腳本來自動依次檢查多個服務(wù)器的 22 端口是否已打開。

# sh port_scan.sh

Connection to 192.168.1.2 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.3 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.4 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.5 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.6 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.7 22 port [tcp/ssh] succeeded!

2. 掃描多臺服務(wù)器的多個端口是否打開

在這里,我們同樣把需要查詢的所有服務(wù)器地址全部放在一個 server-list.txt 文件里,每個地址單獨一行。這里就不重復(fù)演示了。

與此同時,我們也把需要查詢的服務(wù)器端口放在另一個 port-list.txt 文件里,每個端口單獨一行,如下所示:

# cat port-list.txt
22
80

然后,我們再用 for 循環(huán)依次掃描 server-list.txt 里對應(yīng)服務(wù)器 port-list.txt 所列的端口是否打開。注意,這里用到了兩個 for 循環(huán),第一層是服務(wù)器列表,第二層是端口列表。

# vi multiple_port_scan.sh

#!/bin/sh
for server in `more server-list.txt`
do
for port in `more port-list.txt`
do
#echo $server
nc -zvw3 $server $port
echo ""
done
done

最后,我們給這個腳本賦予可執(zhí)行權(quán)限即可。

$ chmod +x multiple_port_scan.sh

之后,我們就可以用這個腳本來自動依次檢查多個服務(wù)器的多個端口是否已打開。

# sh multiple_port_scan.sh
Connection to 192.168.1.2 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.2 80 port [tcp/http] succeeded!

Connection to 192.168.1.3 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.3 80 port [tcp/http] succeeded!

Connection to 192.168.1.4 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.4 80 port [tcp/http] succeeded!

Connection to 192.168.1.5 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.5 80 port [tcp/http] succeeded!

Connection to 192.168.1.6 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.6 80 port [tcp/http] succeeded!

Connection to 192.168.1.7 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.7 80 port [tcp/http] succeeded!

文章標(biāo)題:如何使用Shell腳本來查看端口是否打開?
分享URL:http://www.rwnh.cn/news/105172.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、面包屑導(dǎo)航、用戶體驗小程序開發(fā)、品牌網(wǎng)站設(shè)計、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
长沙市| 湟中县| 庄河市| 桐乡市| 长泰县| 镇巴县| 阿鲁科尔沁旗| 甘孜| 马关县| 富锦市| 托克托县| 策勒县| 泗阳县| 新干县| 隆昌县| 河间市| 壤塘县| 公安县| 淅川县| 安康市| 枣强县| 马山县| 邵东县| 许昌县| 汶上县| 诏安县| 墨脱县| 黔江区| 封丘县| 拉孜县| 大港区| 宜君县| 梁平县| 武隆县| 炉霍县| 曲麻莱县| 施秉县| 华池县| 阿克| 建阳市| 和硕县|