1. 快速檢測埠連通性
/dev/tcp/<Hostname>(靜態IP地址)/<port>(埠號) 特殊的檔案,允許透過該介面進行TCP網路通訊
例 : 測試 192.168.1.1的22埠是否開啟, /dev/tcp/192.168.1.1/22 沒有輸出結果代表埠是通的,如果有結果輸出代表埠是不通的並未開啟
利用Bash指令碼,還可以同時批次檢測多臺伺服器的多個埠。
首先建立一個CSV檔案(portscan.csv),在檔案中記錄伺服器的IP地址和埠號資訊,一行一個,埠號和IP地址使用空格分隔,如果有多個埠使用逗號進行分割,接著建立一個簡單的Bash指令碼(scan.sh),該指令碼會讀取檔案的每一行並擷取其中的IP地址和埠號的資訊,然後透過for迴圈呼叫/dev/tcp裝置檔案來測試目標的埠連通性,最後列印成功或失敗資訊。為指令碼配置上可執行許可權,然後執行,將CSV檔案作為引數傳遞給指令碼(./scan.sh protscan.csv),幾乎一瞬間就完成了測試,輸出結果有點亂,可以使用管道符配合sort命令來排序一下這樣就可以很清楚的看到結果(./scan.sh portscan.csv | sort -k1),哪些埠是開啟的,哪些埠是關閉的
if [ -n "$1" ] && [ -f "$1" ]; then
while read -r line' do
machine=$(echo "$line"| /bin/cut -d" " -f1)|| exit 100
ports=$(echo "$line"| /bin/cut -d" " -f2)|| exit 101
OLD_IFS=$OLD_IFS
IFS=","
for port in $ports; do
if (echo >/dev/tcp/"$machine"/"$port") >dev/null 2>&1; then
echo "OK: $machine -> $port"
else
echo "ERRORE: $machine -> $port"
fi
done
IFS=$OLD_IFS
done < "$1"
else
echo "ERROR: Invalid or missing data file!"
exit 103
fi