插件窝 干货文章 Linux IP质量检测脚本

Linux IP质量检测脚本

echo 端口 检查 测试 877    来源:    2025-05-11

Linux IP质量检测脚本

以下是一个功能全面的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}"

使用说明

  1. 将上述脚本保存为 ip_quality_check.sh
  2. 添加执行权限:chmod +x ip_quality_check.sh
  3. 运行脚本:./ip_quality_check.sh 目标IP

功能说明

  1. 基本连通性测试:通过ping检测IP是否可达,并计算平均延迟
  2. TCP端口扫描:检测常见TCP端口是否开放
  3. 路由追踪:显示到目标IP的路由路径
  4. MTR综合测试(如果安装):更详细的网络质量分析
  5. 黑名单检查:提供多个黑名单检查服务的链接
  6. 地理位置和ASN信息:通过whois查询IP归属信息
  7. DNS反向解析:检查IP是否有PTR记录
  8. HTTP服务检测:如果80或443端口开放,尝试获取HTTP头信息

依赖工具

  • ping
  • traceroute
  • curl
  • whois
  • host/dig
  • mtr(可选,提供更详细的网络质量分析)

注意事项

  1. 某些测试可能需要root权限(如traceroute)
  2. 端口扫描可能会被目标防火墙拦截
  3. 黑名单检查需要联网访问第三方服务
  4. 脚本执行时间取决于网络状况和测试的全面性

您可以根据需要调整脚本,添加更多检测项或修改检测参数。