首页 > 代码库 > 【cdn节点状态简单查看】cdn_lookup.sh

【cdn节点状态简单查看】cdn_lookup.sh

【cdn节点状态简单查看】cdn_lookup.sh

#!/bin/bash
# 
# 2014/11/4

action=$1
[ -z $2 ] && hostname="example.com" || hostname=$2

function usage() {
    cat <<_EOF

usage: $0 [hh|vv|t1|t2]

        hh:                     轮训CDN的IP访问指定域名获取header
        vv:                     同上,显示详细内容
        t1 [hostname]:          使用当前DNS来分析指定域名
        t2 [hostname,ip]:       使用指定的域名和CDN节点IP来分析

_EOF
}

function cdn_ip() {
    nslookup ${hostname} |grep Address |grep -v "#53$" |cut -d " " -f2
}

function hh() {
    cdn_ip |xargs -i curl -I -H "Host:${hostname}" http://{}/ >hh.log 2>&1
    cat hh.log |grep -B3 -A11 ‘200 OK‘ |diff hh.log - |sed -e ‘1,4d‘ -e ‘s/-//g‘ -e ‘s/^[><]//g‘ 
}

function vv() {
    cdn_ip |xargs -i curl -o /dev/null -v -H "Host:${hostname}" http://{}/ >vv.log 2>&1
    cat vv.log |grep -B10 -A16 ‘200 OK‘ |diff vv.log - |sed -e ‘1d‘ -e ‘s/-//g‘ -e ‘s/^[><]//g‘
}

function t1() {
    curl -o /dev/null -v http://${hostname}
}

function t2() {
    [ -z $3 ] && ip=$(cdn_ip |head -n 1) || ip=$3
    curl -o /dev/null -v -H "Host:${hostname}" http://${ip}/ >${ip}.log 2>&1
    sed -i -e ‘s/* About to/\n+-----------------------------------------------------------------------------------+\n\0/g‘         -e ‘s/< HTTP\/1.1/\0===============================/g‘ ${ip}.log
    cat ${ip}.log
}


case ${action} in
    hh|vv|t1|t2)
        ${action}
        ;;
    *)
        usage
        echo "[-] 解析-- ${hostname} --对应的CDN_IP的列表:"
        cdn_ip ${hostname}
        echo ""
        ;;
esac


【cdn节点状态简单查看】cdn_lookup.sh