公司使用多家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状态的更多相关文章

  1. C++文件操作(输入输出、格式控制、文件打开模式、测试流状态、二进制读写)

    1.向文件写数据 头文件#include <ofstream> ①Create an instance of ofstream(创建ofstream实例) ②Open the file w ...

  2. httplib模块,测试cdn节点文件同步

    httplib模块是一个专门用于http的模块,urllib和urllib2也都是基于对它进行了更上层次的封装 我记得刚开始的时候,公司用的cdn有段时间抽风,全球40多个节点总是有那么几个节点不同步 ...

  3. shell监控网卡状态,故障时自动重启网卡

      今天朋友找我写个监控网卡状态的脚本,要求在系统网卡挂了可以自己启动起来,这个要求是不是很bt,我考虑了半天,简单的写了个shell脚本来监控,实现原理是使用ping来测试网络连通性,如果不通就重启 ...

  4. wget 测试cdn

    可以通过wget 或curl 指定代理ip来访问同一个链接的不同cdn响应页面.来测试不同cdn间的数据同步问题.

  5. Linux CAN Shell 测试脚本程序

    2012-01-13 22:57:14 为我的开发板2440做二次开发,添加了can驱动,做了驱动测试程序,没理由不添加一个测试脚本程序啊!修改了测试程序,使应用程序更加灵活,添加了一下传递参数.接着 ...

  6. Shell中退出状态码exit

    shell中运行的每个命令都使用退出状态码(exit status)来告诉shell它完成了处理.退出状态码是一个0~255之间的整数值,在命令结束时由命令传回shell. 1 .查看退出状态码 Li ...

  7. shell脚本 系统状态信息查看

    一.简介 源码地址 日期:2018/6/23 介绍:显示简单的系统信息 效果图: 二.使用 适用:centos6+,ubuntu12+ 语言:中文 注意:无 下载 wget https://raw.g ...

  8. Powershell测试端口状态

    function Test-Port { Param([string]$ComputerName,$port = 5985,$timeout = 1000) try { $tcpclient = Ne ...

  9. Shell编程-条件测试 | 基础篇

    什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令.除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux ...

随机推荐

  1. hdu Super Jumping

    简单的dp,最优子结构是dp[i],即从0~i来看,是的dp[i]最大,然后找到最大中的最大就可以了, 转移方程是:dp[i]=max{dp[i],dp[j]+value[i]},注意这里有两个判断条 ...

  2. kail-linux 下载地址

    http://archive-6.kali.org/kali-images/kali-2016.1/kali-linux-2016.1-i386.iso 选择debian 32/64bit安装 开始启 ...

  3. 仿APP系列 - 超级强大的拖动插件(支持块级的拖拉,左右拖拉)

    事实上不太适合做上拉刷新和下拉加载 官方地址 http://idangero.us/swiper demo http://idangero.us/swiper/demos/#.V5YV4_mF4dU ...

  4. MySQL数据库管理常用命令

    参考: http://blog.linuxeye.com/419.html 安装 利用RPM包安装MySQL   设置TCP 3306端口的iptables     root密码管理 设置root用户 ...

  5. Win7 桌面应用图标不见了

    taskkill /im explorer.exe /f cd /d %userprofile%\appdata\local del iconcache.db /a start explorer.ex ...

  6. 初学者对Spring MVC的认识

    首先是要一定说明的是,这倒是说明是什么?对吧Spring MVC 是SpringFrameWork的后续产品,并且已经融入到Spring Web Flow中同时Spring MVC 分离了控制器,模型 ...

  7. Hrbustoj 2252 完全背包

    一个变形的完全背包 题是第一次团队赛的热身题...看别人博客看到这道题忽然就不会了 然后想了半天还是没想出来...上oj找了提交排名..发现自己弄出来的奇怪的办法居然用时最短... 问装m最低要多少的 ...

  8. HTTP 笔记与总结(7)HTTP 缓存(配合 Apache 服务器)

    在网络上,有一些缓存服务器,另外浏览器自身也有缓存功能. 例如: <!DOCTYPE html> <html lang="en"> <head> ...

  9. 【转】Unity 之 移动设备的触控操作

    http://blog.csdn.net/anyuanlzh/article/details/18367941 这篇博文将简单的记录,如何用unity处理在移动设备上的触控操作.    iOS和And ...

  10. FW:使用weave管理docker网络

    Posted on 2014-11-12 22:20 feisky 阅读(1761) 评论(0) 编辑 收藏 weave简介 Weave creates a virtual network that ...