Shell 实现探测一批 IP 的 443 端口
实现
以下是一个用于探测一批 IP 的 443 端口是否通的 Linux 脚本:
#!/bin/bash
# 定义IP列表文件路径
ip_file="ip.txt"
# 检查文件是否存在
if [ ! -f "$ip_file" ]; then
echo "错误:IP列表文件 $ip_file 不存在!"
exit 1
fi
# 检查是否安装了nc(netcat)
if ! command -v nc &> /dev/null; then
echo "未找到 'nc' 命令,请安装 netcat 工具包。"
exit 1
fi
# 读取并处理每个IP地址
while IFS= read -r ip; do
# 跳过空行
if [ -z "$ip" ]; then
continue
fi
# 使用nc探测443端口(设置超时为2秒)
if timeout 2 nc -z "$ip" 443 > /dev/null 2>&1; then
echo -e "\033[32m✅ $ip:443 端口通\033[0m"
else
echo -e "\033[31m❌ $ip:443 端口不通\033[0m"
fi
done < "$ip_file"
使用说明:
准备 IP 列表文件
创建一个名为 ip.txt
的文本文件,每行一个 IP 地址或域名,例如:
google.com
192.168.1.1
8.8.8.8
保存脚本文件
将上述脚本保存为 check_ports.sh
。
赋予执行权限
运行脚本
功能说明:
- 自动检测系统是否安装了
nc
(netcat)。 - 使用
timeout
设置最大等待时间为 2 秒,防止脚本卡住。 - 支持 IP 地址和域名。
- 输出结果带有颜色提示(绿色表示通,红色表示不通)。
- 自动跳过空行。
注意事项:
- 如果系统没有安装
nc
,请使用包管理器安装(如 netcat
、nmap-ncat
或 openbsd-netcat
)。 - 若网络环境存在防火墙或代理,可能影响检测结果。
- 若 IP 数量较多,可考虑并行处理以提高效率(需扩展脚本)。
示例输出:
✅ google.com:443 端口通
❌ 192.168.1.1:443 端口不通
✅ 8.8.8.8:443 端口通
该脚本适用于基本的网络连通性检测,适用于运维、安全审计等场景。