Shell脚本批量检测IP的443端口联通性
1. 批量检测脚本
#!/bin/bash
# 功能:批量检测IP的443端口连通性
# 输入:ip_list.txt(每行一个IP地址)# 检查文件是否存在
if [ ! -f "/root/ip_list.txt" ]; thenecho "错误:未找到IP列表文件 ip_list.txt"exit 1
fi# 结果输出文件
OUTPUT="port_check_result.txt"
echo "IP地址,443端口状态" > $OUTPUT# 循环处理每个IP
while read -r IP; doIP=${IP//[$'\t\r\n']} # 清除换行符# 使用TCP连接检测timeout 3 bash -c "echo >/dev/tcp/$IP/443" &>/dev/nullif [ $? -eq 0 ]; then#端口已连通用绿色标识echo -e "\e[32m $IP:443 端口已连通\e[0m"else#端口不可达用红色标识echo -e "\e[31m $IP:443 端口不可达\e[0m"fi# 记录结果echo "$IP,$status" >> $OUTPUT
done < ip_list.txtecho "检测完成,结果已保存至 $OUTPUT"
使用 timeout 命令避免长时间阻塞(例如设置 3 秒超时)。
语法:timeout <seconds> bash -c 'echo > /dev/tcp/<host>/<port>' &>/dev/null
&>/dev/null:丢弃所有输出,仅通过退出码判断状态。
2. 核心检测机制
- 使用
/dev/tcp
虚拟设备进行TCP握手(无需额外工具) timeout 3
限制检测时间为3秒(可调整)
---------------------------------------------------------------------------------------------------------------------------------
PS: 字体颜色
字体颜色:30-37
- 默认=0
- 黑色=30
- 红色=31
- 绿色=32
- 黄色=33
- 蓝色=34
- 紫色=35
- 天蓝色(青色)=36
- 白色=37
# echo -e "\e[30m 黑色 \e[0m"
# echo -e "\e[31m 红色 \e[0m"
# echo -e "\e[32m 绿色 \e[0m"
# echo -e "\e[33m 黄色 \e[0m"
# echo -e "\e[34m 蓝色 \e[0m"
# echo -e "\e[35m 紫色 \e[0m"
# echo -e "\e[36m 青色 \e[0m"
# echo -e "\e[37m 白色 \e[0m"