公司使用多家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. Cite a Website in Paper 论文中引用网页的格式

    Template: 1.A. Author Surname, 'Title', Year Published, <http://Website-Url> (accessed 10 Octo ...

  2. WPF DataGrid的分页实现

    原理:其实分页功能的实现大家都清楚,无非就是把一个记录集通过运算来刷选里面对应页码的记录. 接来下我们再次添加新的代码 <Grid> <DataGrid  Name="da ...

  3. android之初识Intent

    首先修改values\strings.xml文件 代码如下: <resources> <string name="app_name">mytab</s ...

  4. SQL - 语法收集

    随机数 select cast(floor(rand()*10000) as int) GUID select newid() 判断两个日期是否为同一天 DATEDIFF(DAY,QsDate,'20 ...

  5. Symantec更新服务器

    HTTP liveupdate.symantec.com liveupdate.symantecliveupdate.com   FTP update.symantec.com/opt/content ...

  6. sqlserver ldf过大处理方法

    第一步 DUMP TRANSACTION   databasename  WITH   NO_LOG  -- 第二步:截断事务日志  BACKUP LOG   databasename   WITH  ...

  7. OpenCV学习笔记——滑动条开关

    由于opencv库中并没有专门为开关而设的函数,可以用滑动条做开关 代码: #include<highgui.h> #include<cv.h> int g_switch_va ...

  8. mongodb 手动分片的命令汇总

    手动分片的操作 自动分片会带来性能的下降. 所以要合理使用手动分片. 并且配合Tag一起使用. # 对于4个shard的程序, 预先处理的指令1. 加入分片服务器sh.addShard( " ...

  9. DS实验题 最大最小

    题目: 算法设计: 计算最小值算法: 设置一个flag,flag为1的时候代表遇到*号: 遇到数字时: flag为0进栈: flag为1的时候,从栈顶提出一个元素和当前元素运算,结果进栈 最后对栈进行 ...

  10. 【Objective-C】Windows下Objective-C开发环境配置

    [Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/   最近打 ...