新聞中心
bash,cat /path/to/your/script.sh,“使用 Shell 腳本查看多個(gè)服務(wù)器的端口是否打開

在運(yùn)維工作中,我們經(jīng)常需要檢查服務(wù)器的端口是否開放,我們需要檢查多個(gè)服務(wù)器的端口,這時(shí)候就需要編寫一個(gè) Shell 腳本來(lái)實(shí)現(xiàn)這個(gè)功能,本文將介紹如何使用 Shell 腳本來(lái)查看多個(gè)服務(wù)器的端口是否打開。
1. 準(zhǔn)備工作
我們需要獲取所有需要檢查的服務(wù)器的 IP 地址或者主機(jī)名,這些信息可以存儲(chǔ)在一個(gè)文本文件中,每行一個(gè) IP 地址或者主機(jī)名。
192、168.1.1 192、168.1.2 192、168.1.3
接下來(lái),我們需要確定要檢查的端口范圍,通常情況下,我們會(huì)檢查常見的服務(wù)端口,如 80、443、8080 等,在本例中,我們將檢查這些端口。
2. 編寫 Shell 腳本
根據(jù)上述準(zhǔn)備工作,我們可以編寫如下 Shell 腳本:
!/bin/bash
定義服務(wù)器列表文件和端口范圍
SERVER_FILE="servers.txt"
PORT_RANGE="80-443"
遍歷服務(wù)器列表文件中的每一行
while read server; do
使用 for 循環(huán)遍歷端口范圍
for port in $(seq $PORT_RANGE); do
使用 nc 命令檢查端口是否開放
nc -z -w 5 $server $port > /dev/null 2>&1
根據(jù) nc 命令的返回值判斷端口是否開放
if [ $? -eq 0 ]; then
echo "服務(wù)器 $server 的 $port 端口是開放的"
else
echo "服務(wù)器 $server 的 $port 端口是關(guān)閉的"
fi
done
done < $SERVER_FILE
將以上腳本保存為 check_ports.sh,并給予執(zhí)行權(quán)限:
chmod +x check_ports.sh
3. 運(yùn)行腳本
運(yùn)行腳本,查看多個(gè)服務(wù)器的端口是否開放:
./check_ports.sh
腳本將會(huì)輸出每個(gè)服務(wù)器在指定端口范圍內(nèi)的端口狀態(tài),如果需要查看詳細(xì)的錯(cuò)誤信息,可以將腳本中的 > /dev/null 這一行刪除,這樣,當(dāng)端口關(guān)閉時(shí),nc 命令會(huì)輸出詳細(xì)的錯(cuò)誤信息。
for port in $(seq $PORT_RANGE); do
...(省略其他代碼)
if [ $? -ne 0 ]; then 注意這里應(yīng)該是 $? != 0 而不是 $? == 0
nc_error=$(nc_error) 這里假設(shè)存在一個(gè)變量用于存儲(chǔ)錯(cuò)誤信息,實(shí)際應(yīng)用中可能需要修改這部分代碼以獲取詳細(xì)錯(cuò)誤信息
echo "服務(wù)器 $server 的 $port 端口是關(guān)閉的,錯(cuò)誤信息:$nc_error"
else
echo "服務(wù)器 $server 的 $port 端口是開放的"
endif
done < $SERVER_FILE
4. 其他問(wèn)題與解答
A1. 如何獲取所有可用的 IP 或者主機(jī)名?
答:可以使用 nmap 或者 ping 命令來(lái)獲取所有可用的 IP 或者主機(jī)名,使用 nmap 可以掃描整個(gè)網(wǎng)絡(luò)并顯示在線主機(jī)的信息:
nmap --all-hosts | grep "Up" | cut -d' ' -f2 | sort | uniq > available_ips.txt
本文名稱:如何查看shell腳本
網(wǎng)站地址:http://www.dlmjj.cn/article/djsgpgd.html


咨詢
建站咨詢
