#!/bin/bash
action=$1
[ -z $2 ] &&
hostname
=
"my.workec.com"
||
hostname
=$2
function
usage() {
cat
<<_EOF
usage: $0 [hh|vv|t1|t2]
ss: 轮训CDN的IP访问指定域名获取status code
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
}
function
ss() {
for
ip
in
`cdn_ip`
do
echo
-n
"IP=${ip}, Code="
curl -o
/dev/null
-s -w %{http_code} -H
"Host:${hostname}"
http:
//
${ip}
echo
done
}
case
${action}
in
ss|hh|vv|t1|t2)
${action}
;;
*)
usage
echo
"[-] 解析-- ${hostname} --对应的CDN_IP的列表:"
cdn_ip ${
hostname
}
echo
""
;;
esac