【cdn节点状态简单查看】cdn_lookup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#!/bin/bash
#
# 2015/6/18
# 轮训cdn的节点ip,获取status code,以及一些header信息。
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
|
本文转自 pcnk 51CTO博客,原文链接:http://blog.51cto.com/nosmoking/1594727,如需转载请自行联系原作者