使用shell测试cdn状态
公司使用多家cdn,测试cdn在各个地方的响应情况,以便于提高视频访问的用户体验。分别在阿里云华南1,华东1,华东2,华北2等不同地区节点测试。该随笔为自己所用。
1.该脚本会测试某一cdn的url,如果302,继续测试,如果是503,则测试cdn源站是否也为503,并记http_code,录测试时间以及测试的url等信息。
#!/bin/bash #set -e
start_time=$(date +%s)
today=$(date +%F)
mkdir -pv /cdn/logs &> /dev/null
dl200="/cdn/logs/dl200-$today.log"
dlno200="/cdn/logs/dlno200-$today.log"
> $dl200
> $dlno200
#echo $dl200 $dlno200
#exit
cat /cdn/shell/dltxt/dl-$today |while read line
do
#echo $line
HTTP_CODE=$(curl -XGET -I -m -o /dev/null -s -w "%{http_code}""\n" $line)
if [ "$HTTP_CODE" -eq ];then
CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')
echo $HTTP_CODE $CURRENT_TIME $line >> $dl200
elif [ "$HTTP_CODE" -eq ];then
HTTP_NEW_CODE=
NEW_URL=$(curl -XGET -I -m -s $line |grep ^Location|awk -F" " '{print $2}'|tr -d '\r'|tr -d '$')
while [ "$HTTP_NEW_CODE" -eq ]
do
#echo $NEW_URL
HTTP_NEW_CODE=$(curl -XGET -I -m -o /dev/null -s -w "%{http_code}""\n" $NEW_URL)
#echo $HTTP_NEW_CODE
#if [ "$HTTP_NEW_CODE" -eq 200 ];then
# echo $HTTP_NEW_CODE $NEW_RUL >> /xiaoke/shell/logs/gs200.log
if [ "$HTTP_NEW_CODE" -eq ];then
NEW_URL=$(curl -XGET -I -m -s $NEW_URL |grep ^Location|awk -F" " '{print $2}'|tr -d '\r'|tr -d '$')
elif [ "$HTTP_NEW_CODE" -eq ];then
CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')
echo $HTTP_NEW_CODE $CURRENT_TIME $NEW_URL >> $dl200
elif [ "$HTTP_NEW_CODE" -eq ];then
CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')
echo $HTTP_NEW_CODE $CURRENT_TIME $NEW_URL >> $dlno200
SOURCE_URL=$(echo $line |sed 's;gxbvideo-dl;gxbvideo;g')
SOURCE_CODE=$(curl -XGET -I -m -o /dev/null -s -w "%{http_code}""\n" $SOURCE_URL)
if [ "$SOURCE_CODE" -eq ];then
echo $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200
else
echo $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200
fi
else
CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')
echo $HTTP_NEW_CODE $CURRENT_TIME $NEW_URL >> $dlno200
fi
done
elif [ "$HTTP_CODE" -eq ];then
CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')
echo $HTTP_CODE $CURRENT_TIME $line >> $dlno200
SOURCE_URL=$(echo $line |sed 's;gxbvideo-dl;gxbvideo;g')
SOURCE_CODE=$(curl -XGET -I -m -o /dev/null -s -w "%{http_code}""\n" $SOURCE_URL)
if [ "$SOURCE_CODE" -eq ];then
echo $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200
else
echo $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200
fi
else
#current_time=$(date '+%Y%m%d %H:%M:%S')
CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')
echo $HTTP_CODE $CURRENT_TIME $line >> $dlno200
fi
sleep
done
end_time=$(date +%s)
#echo $end_time
delta_time=`expr $end_time - $start_time`
echo "总耗时:$delta_time秒" >> $dl200
2.查看测试信息日志即可。
使用shell测试cdn状态的更多相关文章
- C++文件操作(输入输出、格式控制、文件打开模式、测试流状态、二进制读写)
1.向文件写数据 头文件#include <ofstream> ①Create an instance of ofstream(创建ofstream实例) ②Open the file w ...
- httplib模块,测试cdn节点文件同步
httplib模块是一个专门用于http的模块,urllib和urllib2也都是基于对它进行了更上层次的封装 我记得刚开始的时候,公司用的cdn有段时间抽风,全球40多个节点总是有那么几个节点不同步 ...
- shell监控网卡状态,故障时自动重启网卡
今天朋友找我写个监控网卡状态的脚本,要求在系统网卡挂了可以自己启动起来,这个要求是不是很bt,我考虑了半天,简单的写了个shell脚本来监控,实现原理是使用ping来测试网络连通性,如果不通就重启 ...
- wget 测试cdn
可以通过wget 或curl 指定代理ip来访问同一个链接的不同cdn响应页面.来测试不同cdn间的数据同步问题.
- Linux CAN Shell 测试脚本程序
2012-01-13 22:57:14 为我的开发板2440做二次开发,添加了can驱动,做了驱动测试程序,没理由不添加一个测试脚本程序啊!修改了测试程序,使应用程序更加灵活,添加了一下传递参数.接着 ...
- Shell中退出状态码exit
shell中运行的每个命令都使用退出状态码(exit status)来告诉shell它完成了处理.退出状态码是一个0~255之间的整数值,在命令结束时由命令传回shell. 1 .查看退出状态码 Li ...
- shell脚本 系统状态信息查看
一.简介 源码地址 日期:2018/6/23 介绍:显示简单的系统信息 效果图: 二.使用 适用:centos6+,ubuntu12+ 语言:中文 注意:无 下载 wget https://raw.g ...
- Powershell测试端口状态
function Test-Port { Param([string]$ComputerName,$port = 5985,$timeout = 1000) try { $tcpclient = Ne ...
- Shell编程-条件测试 | 基础篇
什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令.除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux ...
随机推荐
- hdu Super Jumping
简单的dp,最优子结构是dp[i],即从0~i来看,是的dp[i]最大,然后找到最大中的最大就可以了, 转移方程是:dp[i]=max{dp[i],dp[j]+value[i]},注意这里有两个判断条 ...
- kail-linux 下载地址
http://archive-6.kali.org/kali-images/kali-2016.1/kali-linux-2016.1-i386.iso 选择debian 32/64bit安装 开始启 ...
- 仿APP系列 - 超级强大的拖动插件(支持块级的拖拉,左右拖拉)
事实上不太适合做上拉刷新和下拉加载 官方地址 http://idangero.us/swiper demo http://idangero.us/swiper/demos/#.V5YV4_mF4dU ...
- MySQL数据库管理常用命令
参考: http://blog.linuxeye.com/419.html 安装 利用RPM包安装MySQL 设置TCP 3306端口的iptables root密码管理 设置root用户 ...
- Win7 桌面应用图标不见了
taskkill /im explorer.exe /f cd /d %userprofile%\appdata\local del iconcache.db /a start explorer.ex ...
- 初学者对Spring MVC的认识
首先是要一定说明的是,这倒是说明是什么?对吧Spring MVC 是SpringFrameWork的后续产品,并且已经融入到Spring Web Flow中同时Spring MVC 分离了控制器,模型 ...
- Hrbustoj 2252 完全背包
一个变形的完全背包 题是第一次团队赛的热身题...看别人博客看到这道题忽然就不会了 然后想了半天还是没想出来...上oj找了提交排名..发现自己弄出来的奇怪的办法居然用时最短... 问装m最低要多少的 ...
- HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器)
在网络上,有一些缓存服务器,另外浏览器自身也有缓存功能. 例如: <!DOCTYPE html> <html lang="en"> <head> ...
- 【转】Unity 之 移动设备的触控操作
http://blog.csdn.net/anyuanlzh/article/details/18367941 这篇博文将简单的记录,如何用unity处理在移动设备上的触控操作. iOS和And ...
- FW:使用weave管理docker网络
Posted on 2014-11-12 22:20 feisky 阅读(1761) 评论(0) 编辑 收藏 weave简介 Weave creates a virtual network that ...