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

