2021-03-14 分類: 網(wǎng)站建設(shè)
我們?cè)谶M(jìn)行服務(wù)器配置的時(shí)候,經(jīng)常要查看服務(wù)器的某個(gè)端口是否已經(jīng)開(kāi)放。如果服務(wù)器只有一兩臺(tái)的話,那很好辦,只需要使用 nc
命令一個(gè)個(gè)查看即可。
但是,如果你的服務(wù)器是個(gè)集群,有很多臺(tái)呢?那如果還一個(gè)個(gè)手動(dòng)去檢查的話,效率肯定是無(wú)比低下的,年底裁員名單里肯定有你。
在這種情況下,我們完全可以使用 Shell 腳本配合 nc 命令來(lái)達(dá)到我們的目的。而且,不管服務(wù)器有幾臺(tái),需要檢查的端口有幾個(gè),都可以實(shí)現(xiàn)這樣的目標(biāo)。
在本文里,我們用 Shell 腳本來(lái)實(shí)現(xiàn)兩個(gè)需求:
在開(kāi)始之前,我們先來(lái)了解一下 nc 命令。
nc 是英文單詞 netcat 的縮寫,它是通過(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è)需求。
在這里,我們先把需要查詢的所有服務(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!
在這里,我們同樣把需要查詢的所有服務(wù)器地址全部放在一個(gè) server-list.txt
文件里,每個(gè)地址單獨(dú)一行。這里就不重復(fù)演示了。
與此同時(shí),我們也把需要查詢的服務(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!
網(wǎng)頁(yè)標(biāo)題:如何使用Shell腳本來(lái)查看端口是否打開(kāi)?
文章起源:http://m.newbst.com/news22/105172.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、域名注冊(cè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站改版、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容