佛山新網(wǎng)站建設(shè)seo網(wǎng)站優(yōu)化專員
1、準(zhǔn)備
我們可以使用下面命令關(guān)閉一個端口
sudo iptables -A INPUT -p tcp --dport 端口號 -j DROP
我關(guān)閉的是22端口,各位可以關(guān)其它的或者打開其它端口測試,謹(jǐn)慎關(guān)閉22端口!不然就會像我下面一樣握手超時😭😭😭
打開端口
sudo iptables -I INPUT -p tcp --dport 端口號 -j ACCEPT
注意: 這些更改在當(dāng)前會話中有效,重啟后可能會丟失。要保存規(guī)則,可以使用iptables-save命令將規(guī)則導(dǎo)出到文件,并在系統(tǒng)啟動時重新加載。
然后可以通過命令行的方式檢查一下機(jī)器打開端口的狀態(tài)
nc -zvw5 1.1.1.12 22
其中:
-z
:表示掃描模式,只掃描端口而不發(fā)送任何數(shù)據(jù)。-v
:表示詳細(xì)模式,會顯示更多的掃描信息。-w5
:設(shè)置超時時間(wait timeout),后面的數(shù)字(在這個例子中是5)表示等待響應(yīng)的最大秒數(shù)。如果在這個時間內(nèi)沒有收到響應(yīng),則認(rèn)為連接失敗。<hostname_or_IP>
(192.168.1.1):目標(biāo)主機(jī)的主機(jī)名或IP地址。<port>
(22):要檢查的端口號。
另外,如果你想要一個更詳細(xì)的端口掃描報告,包括操作系統(tǒng)檢測和服務(wù)版本檢測,你可能需要使用更高級的端口掃描工具,如Nmap
。
創(chuàng)建測試文件
cat <<EOF>> host.txt
1.1.1.12
1.1.1.13
1.1.1.14
EOF
2、編寫代碼
使用vim編寫check_prot.sh文件
vim check_prot.sh
然后話不多說,直接上代碼
下面是一鍵批量檢查主機(jī)端口的腳本完整代碼,都寫了注釋
#!/bin/bash
#auther:黑子哥呢?
#desc:一鍵批量檢查端口# 要檢查的主機(jī)列表文件(格式:主機(jī)名或IP)
HOST_FILE="host.txt"# 要檢查的端口號
PORT=$1 # 例如,檢查SSH端口(通常為22)# 臨時文件用于存儲打開端口的主機(jī)
OPEN_PORTS_FILE=$(mktemp)# 臨時文件用于存儲沒有打開端口的主機(jī)
CLOSED_PORTS_FILE=$(mktemp)# 檢查主機(jī)列表文件是否存在
if [ ! -f "$HOST_FILE" ]; thenecho "主機(jī)列表文件 $HOST_FILE 不存在。"exit 1
fi# 檢查端口是否打開的函數(shù)
check_port() {local host="$1"local port="$2"# 嘗試使用nc檢查端口(如果nc不可用,可以嘗試其他方法)if nc -zw5 "$host" "$port" &>/dev/null; thenecho "$host" >> "$OPEN_PORTS_FILE"elseecho "$host" >> "$CLOSED_PORTS_FILE"fi
}# 讀取主機(jī)列表并檢查端口
while IFS= read -r host; do# 跳過空行if [ -z "$host" ]; thencontinueficheck_port "$host" "$PORT"
done < "$HOST_FILE"# 輸出打開端口的主機(jī)列表
if [ -s "$OPEN_PORTS_FILE" ]; thenecho "以下主機(jī)的 $PORT 端口是打開的:"cat "$OPEN_PORTS_FILE"
fi# 輸出沒有打開端口的主機(jī)列表
if [ -s "$CLOSED_PORTS_FILE" ]; thenecho "以下主機(jī)的 $PORT 端口是沒有打開的:"cat "$CLOSED_PORTS_FILE"
fi# 清理臨時文件
rm -f "$OPEN_PORTS_FILE" "$CLOSED_PORTS_FILE"
上面代碼除了使用nc也可以使用其它工具,比如nmap,使用nmap可以參考這篇文章:nmap命令詳細(xì)教程
比如下面的例子,我們只需要把nc那一行的命令替換成nmap即可
-
例子:
上面腳本中的代碼nc -zw5 "$host" "$port" &>/dev/null
上面內(nèi)容替換成下面的
nmap -sT -p 22 --open -oN &>/dev/null 1.1.1.12 |grep -q 'open'
注意: 使用nmap之前請確保自己的機(jī)器上安裝了nmap,如果沒有請先安裝
安裝命令yum -y install nmap
運(yùn)行腳本命令
sh check_prot.sh 22
等待一會,就可以看見下面腳本運(yùn)行結(jié)果