以下是一个功能全面的Linux IP质量检测脚本,可以检查IP地址的连通性、延迟、路由路径以及黑名单状态等。
#!/bin/bash
# IP质量检测脚本
# 功能:检查IP的连通性、延迟、路由路径、黑名单状态等
# 使用方法:./ip_quality_check.sh [IP地址]
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 检查是否提供了IP参数
if [ -z "$1" ]; then
echo -e "${RED}错误:请提供要检测的IP地址${NC}"
echo "用法: $0 [IP地址]"
exit 1
fi
IP=$1
# 验证IP地址格式
if ! [[ $IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo -e "${RED}错误:无效的IP地址格式${NC}"
exit 1
fi
# 临时文件
TMP_FILE=$(mktemp)
# 清理函数
cleanup() {
rm -f "$TMP_FILE"
}
trap cleanup EXIT
# 1. 基本连通性测试
echo -e "${BLUE}[1] 基本连通性测试${NC}"
ping -c 4 "$IP" > "$TMP_FILE"
if [ $? -eq 0 ]; then
echo -e "${GREEN}连通性: 成功${NC}"
# 提取平均延迟
avg_ping=$(grep 'rtt min/avg/max/mdev' "$TMP_FILE" | awk -F'/' '{print $5}')
echo -e "平均延迟: ${YELLOW}$avg_ping ms${NC}"
else
echo -e "${RED}连通性: 失败${NC}"
fi
# 2. TCP端口扫描(常见端口)
echo -e "\n${BLUE}[2] TCP端口扫描(常见端口)${NC}"
PORTS="21 22 23 25 53 80 110 143 443 465 587 993 995 3306 3389 8080"
for port in $PORTS; do
timeout 1 bash -c "echo >/dev/tcp/$IP/$port" 2>/dev/null && \
echo -e "端口 $port: ${GREEN}开放${NC}" || \
echo -e "端口 $port: ${RED}关闭${NC}"
done
# 3. 路由追踪
echo -e "\n${BLUE}[3] 路由追踪${NC}"
traceroute -n -m 15 "$IP" 2>&1 | head -n 15
# 4. MTR综合测试(如果安装)
if command -v mtr &> /dev/null; then
echo -e "\n${BLUE}[4] MTR综合测试${NC}"
mtr --report --report-cycles 5 --no-dns "$IP"
else
echo -e "${YELLOW}未安装mtr,跳过MTR测试${NC}"
fi
# 5. 检查黑名单状态
echo -e "\n${BLUE}[5] 黑名单检查${NC}"
BL_CHECK_URLS=(
"https://www.abuseipdb.com/check/$IP"
"https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a$IP"
"https://www.ipqualityscore.com/free-ip-lookup-proxy-vpn-test/lookup/$IP"
)
for url in "${BL_CHECK_URLS[@]}"; do
domain=$(echo "$url" | awk -F/ '{print $3}')
echo -e "检查 ${YELLOW}$domain${NC}: $url"
done
# 6. 地理位置和ASN信息
echo -e "\n${BLUE}[6] 地理位置和ASN信息${NC}"
if command -v whois &> /dev/null; then
whois "$IP" | grep -Ei 'country|origin|netname|descr' | head -n 10
else
echo -e "${YELLOW}未安装whois,跳过ASN查询${NC}"
fi
# 7. DNS反向解析
echo -e "\n${BLUE}[7] DNS反向解析${NC}"
host "$IP" | grep 'pointer'
# 8. HTTP服务检测(如果80或443开放)
echo -e "\n${BLUE}[8] HTTP服务检测${NC}"
if timeout 1 bash -c "echo >/dev/tcp/$IP/80" 2>/dev/null; then
echo -e "HTTP服务(80):"
curl -I -m 5 "http://$IP" 2>&1 | head -n 10
fi
if timeout 1 bash -c "echo >/dev/tcp/$IP/443" 2>/dev/null; then
echo -e "\nHTTPS服务(443):"
curl -I -k -m 5 "https://$IP" 2>&1 | head -n 10
fi
echo -e "\n${GREEN}IP质量检测完成${NC}"
ip_quality_check.sh
chmod +x ip_quality_check.sh
./ip_quality_check.sh 目标IP
您可以根据需要调整脚本,添加更多检测项或修改检测参数。