如何使用 Shell 腳本查看多個(gè)服務(wù)器的端口是否打開(kāi)的方法
我們?cè)谶M(jìn)行服務(wù)器配置的時(shí)候,經(jīng)常要查看服務(wù)器的某個(gè)端口是否已經(jīng)開(kāi)放。如果服務(wù)器只有一兩臺(tái)的話(huà),那很好辦,只需要使用 nc 命令一個(gè)個(gè)查看即可。
但是,如果你的服務(wù)器是個(gè)集群,有很多臺(tái)呢?那如果還一個(gè)個(gè)手動(dòng)去檢查的話(huà),效率肯定是無(wú)比低下的,年底裁員名單里肯定有你。
在這種情況下,我們完全可以使用 Shell 腳本配合 nc 命令來(lái)達(dá)到我們的目的。而且,不管服務(wù)器有幾臺(tái),需要檢查的端口有幾個(gè),都可以實(shí)現(xiàn)這樣的目標(biāo)。
在本文里,我們用 Shell 腳本來(lái)實(shí)現(xiàn)兩個(gè)需求:
- 掃描多臺(tái)服務(wù)器的一個(gè)端口是否打開(kāi)
- 掃描多臺(tái)服務(wù)器的多個(gè)端口是否打開(kāi)
在開(kāi)始之前,我們先來(lái)了解一下 nc 命令。
nc 命令簡(jiǎn)介
nc 是英文單詞 netcat 的縮寫(xiě),它是通過(guò)使用 TCP 或 UDP 的網(wǎng)絡(luò)協(xié)議的連接來(lái)讀或?qū)憯?shù)據(jù),可以直接被第三方程序或腳本直接調(diào)用。
同時(shí),它是一款功能非常強(qiáng)大的網(wǎng)絡(luò)調(diào)試工具,因?yàn)樗梢詣?chuàng)建幾乎所有你所需要的連接方式。
nc 工具主要有三種功能模式:連接模式、監(jiān)聽(tīng)模式、通道模式。它的一般使用格式如下:
$ nc [-options] [HostName or IP] [PortNumber]
接下來(lái),我們就用 Shell 腳本結(jié)合 nc 命令來(lái)實(shí)現(xiàn)我們的兩個(gè)需求。
1. 掃描多臺(tái)服務(wù)器的一個(gè)端口是否打開(kāi)
在這里,我們先把需要查詢(xún)的所有服務(wù)器地址全部放在一個(gè) server-list.txt 文件里,每個(gè)地址單獨(dú)一行,如下:
# 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
然后,我們?cè)儆?for 循環(huán)依次掃描 server-list.txt 里對(duì)應(yīng)服務(wù)器的端口是否打開(kāi)。在這里,我們掃描 22 端口是否打開(kāi)。
# vi port_scan.sh #!/bin/sh for server in `more server-list.txt` do #echo $i nc -zvw3 $server 22 done
最后,我們給這個(gè)腳本賦予可執(zhí)行權(quán)限即可。
$ chmod +x port_scan.sh
之后,我們就可以用這個(gè)腳本來(lái)自動(dòng)依次檢查多個(gè)服務(wù)器的 22 端口是否已打開(kāi)。
# 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. 掃描多臺(tái)服務(wù)器的多個(gè)端口是否打開(kāi)
在這里,我們同樣把需要查詢(xún)的所有服務(wù)器地址全部放在一個(gè) server-list.txt 文件里,每個(gè)地址單獨(dú)一行。這里就不重復(fù)演示了。
與此同時(shí),我們也把需要查詢(xún)的服務(wù)器端口放在另一個(gè) port-list.txt 文件里,每個(gè)端口單獨(dú)一行,如下所示:
# cat port-list.txt 22 80
然后,我們?cè)儆?for 循環(huán)依次掃描 server-list.txt 里對(duì)應(yīng)服務(wù)器 port-list.txt 所列的端口是否打開(kāi)。注意,這里用到了兩個(gè) 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
最后,我們給這個(gè)腳本賦予可執(zhí)行權(quán)限即可。
$ chmod +x multiple_port_scan.sh
之后,我們就可以用這個(gè)腳本來(lái)自動(dòng)依次檢查多個(gè)服務(wù)器的多個(gè)端口是否已打開(kāi)。
# 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!
總結(jié)
到此這篇關(guān)于使用 Shell 腳本來(lái)查看多個(gè)服務(wù)器的端口是否打開(kāi)的方法的文章就介紹到這了,更多相關(guān) Shell 腳本查看多個(gè)服務(wù)器的端口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入探究SpringBoot攔截器的自定義設(shè)計(jì)與實(shí)現(xiàn)全攻略
攔截器是Spring框架提供的核心功能之?,主要用來(lái)攔截用戶(hù)的請(qǐng)求,在指定方法前后,根據(jù)業(yè)務(wù)需要執(zhí)行預(yù)先設(shè)定的代碼,本文將給大家和大家一起深入探究SpringBoot攔截器的自定義設(shè)計(jì)與實(shí)現(xiàn),需要的朋友可以參考下2024-05-05
Spring Boot Filter 過(guò)濾器的使用方式
這篇文章主要介紹了Spring Boot Filter 過(guò)濾器的使用方式,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
MyBatis實(shí)現(xiàn)遞歸查詢(xún)的方法詳解
在項(xiàng)目開(kāi)發(fā)過(guò)程中,往往會(huì)遇到多級(jí)菜單、分類(lèi)等多層級(jí)結(jié)構(gòu)數(shù)據(jù)的查詢(xún)。本文就來(lái)為大家講講MyBatis實(shí)現(xiàn)遞歸查詢(xún)的方法,感興趣的可以動(dòng)手嘗試一下2022-08-08
springboot快速集成mybatis-plus的詳細(xì)教程
這篇文章主要介紹了springboot快速集成mybatis-plus的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
SpringBoot2.0解決Long型數(shù)據(jù)轉(zhuǎn)換成json格式時(shí)丟失精度問(wèn)題
這篇文章主要介紹了SpringBoot2.0解決Long型數(shù)據(jù)轉(zhuǎn)換成json格式時(shí)丟失精度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Spring?Security配置多個(gè)數(shù)據(jù)源并添加登錄驗(yàn)證碼的實(shí)例代碼
這篇文章主要介紹了Spring?Security配置多個(gè)數(shù)據(jù)源并添加登錄驗(yàn)證碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
springboot themaleaf 第一次進(jìn)頁(yè)面不加載css的問(wèn)題
這篇文章主要介紹了springboot themaleaf 第一次進(jìn)頁(yè)面不加載css的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
Java SPI 機(jī)制知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Java SPI 機(jī)制知識(shí)點(diǎn)總結(jié)內(nèi)容,需要的朋友們可以參考下。2020-02-02

