我們在進行服務器配置的時候,經常要查看服務器的某個埠是否已經開放,如果服務器只有一兩臺的話,那很好辦,只需要使用 nc 命令一個個查看即可,
但是,如果你的服務器是個集群,有很多臺呢?那如果還一個個手動去檢查的話,效率肯定是無比低下的,年底裁員名單里肯定有你,
在這種情況下,我們完全可以使用 Shell 腳本配合 nc 命令來達到我們的目的,而且,不管服務器有幾臺,需要檢查的埠有幾個,都可以實作這樣的目標,
在本文里,我們用 Shell 腳本來實作兩個需求:
- 掃描多臺服務器的一個埠是否打開
- 掃描多臺服務器的多個埠是否打開
在開始之前,我們先來了解一下 nc 命令,
nc 命令簡介
nc 是英文單詞 netcat 的縮寫,它是通過使用 TCP 或 UDP 的網路協議的連接來讀或寫資料,可以直接被第三方程式或腳本直接呼叫,
同時,它是一款功能非常強大的網路除錯工具,因為它可以創建幾乎所有你所需要的連接方式,
nc 工具主要有三種功能模式:連接模式、監聽模式、通道模式,它的一般使用格式如下:
$ nc [-options] [HostName or IP] [PortNumber]
接下來,我們就用 Shell 腳本結合 nc 命令來實作我們的兩個需求,
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 回圈依次掃描 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
最后,我們給這個腳本賦予可執行權限即可,
$ 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 回圈依次掃描 server-list.txt 里對應服務器 port-list.txt 所列的埠是否打開,注意,這里用到了兩個 for 回圈,第一層是服務器串列,第二層是埠串列,
# 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
最后,我們給這個腳本賦予可執行權限即可,
$ 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!
公眾號:良許Linux
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/54837.html
標籤:Linux
上一篇:Linux常用命令
