公司使用多家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 $lineHTTP_CODE=$(curl -XGET  -I -m 20 -o /dev/null -s -w "%{http_code}""\n" $line)if [ "$HTTP_CODE" -eq 200 ];thenCURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')echo  $HTTP_CODE $CURRENT_TIME $line >> $dl200elif [ "$HTTP_CODE" -eq 302 ];thenHTTP_NEW_CODE=302NEW_URL=$(curl -XGET  -I -m 20 -s  $line |grep ^Location|awk -F" " '{print $2}'|tr -d '\r'|tr -d '$')while [ "$HTTP_NEW_CODE" -eq 302 ]do#echo $NEW_URLHTTP_NEW_CODE=$(curl -XGET -I -m 20 -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.logif [ "$HTTP_NEW_CODE" -eq 302 ];thenNEW_URL=$(curl -XGET  -I -m 20 -s  $NEW_URL |grep ^Location|awk -F" " '{print $2}'|tr -d '\r'|tr -d '$')elif [ "$HTTP_NEW_CODE" -eq 200 ];thenCURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')echo $HTTP_NEW_CODE $CURRENT_TIME $NEW_URL >> $dl200elif [ "$HTTP_NEW_CODE" -eq 503 ];thenCURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')echo $HTTP_NEW_CODE $CURRENT_TIME $NEW_URL >> $dlno200SOURCE_URL=$(echo $line |sed 's;gxbvideo-dl;gxbvideo;g')SOURCE_CODE=$(curl -XGET -I -m 20 -o /dev/null -s -w "%{http_code}""\n" $SOURCE_URL)if [ "$SOURCE_CODE" -eq 503 ];thenecho $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200elseecho $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200fielseCURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')echo $HTTP_NEW_CODE $CURRENT_TIME $NEW_URL >> $dlno200fidoneelif [ "$HTTP_CODE" -eq 503 ];thenCURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')echo $HTTP_CODE $CURRENT_TIME $line >> $dlno200SOURCE_URL=$(echo $line |sed 's;gxbvideo-dl;gxbvideo;g')SOURCE_CODE=$(curl -XGET -I -m 20 -o /dev/null -s -w "%{http_code}""\n" $SOURCE_URL)if [ "$SOURCE_CODE" -eq 503 ];thenecho $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200elseecho $SOURCE_CODE $CURRENT_TIME $SOURCE_URL >> $dlno200fielse#current_time=$(date '+%Y%m%d %H:%M:%S')CURRENT_TIME=$(date '+%Y%m%d %H:%M:%S')echo $HTTP_CODE $CURRENT_TIME $line >> $dlno200fi
sleep 25
done
end_time=$(date +%s)
#echo $end_time
delta_time=`expr $end_time - $start_time`
echo "总耗时:$delta_time秒" >> $dl200

2.查看测试信息日志即可。

转载于:https://www.cnblogs.com/xkops/p/5593578.html

使用shell测试cdn状态相关推荐

  1. 模拟get和post请求(支持自定义header和测试CDN节点)

    下面是一个模拟get或者post请求的方法支持 1.get,post方法 2.自定义参数 3.自定义header 4.返回服务器的返回内容和header 5.支持相特定的服务器请求url,适合测试cd ...

  2. Shell编程——退出状态(if语句判断某个命令的退出状态)

    以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除. 一.退出状态 (1)不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它运行结束或者退出时,都会 ...

  3. SHELL学习——退出状态、测试(整数\字符串\ 文件\逻辑运算符)

      退出状态 在Linux系统中,第当命令执行完成后,系统都会有一个退出状态.该退出状态用一整数值表示,用于判断命令运行正确与否. 状态值 含义 0 表示运行成功,程序执行未遇到任何问题 1-125 ...

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

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

  5. 中国大学慕课MOOC ,Shell测试答案

    八 关于Shell编程 1.Shell中的环境变量有PATH.SHELL.HOME. 2.在Linux系统中编写Shell脚本程序,第一行应该写#! /bin/bash. 3.查看Linux系统中环境 ...

  6. Microsoft Windows 7.0 build 7000 NAP测试--健康状态检测验证报告

    第一份已经发布的测试报告主要是针对Windows 7.0 build 7000的一个功能概览,让大家看看Windows 7.0的主要更新和一些新特性的展现.那么大多数东西是粗浅的,没有细细的品味Win ...

  7. python中执行shell脚本之subprocess模块_如何使用Python中的subprocess模块检查shell脚本的状态?...

    我有一个简单的Python脚本,它将使用Python中的subprocessmdoule来执行shell脚本.在 下面是我的pythonshell脚本,它正在调用testing.shshell脚本,它 ...

  8. Linux篇:shell脚本监控主机状态的3种方式

    01 前言 shell的基础语法学习告了一段路,现在开始实际操作练习,今天记录的是shell脚本的经典题目 监控主机或IP的状态,并给出提示,如以下背景: 编写脚本判断以下4个主机的状态 181.13 ...

  9. Shell程序退出状态码的命令详解

    在本篇文章当中主要给大家介绍了一些常见的程序退出的状态码!并且给出一下例子帮助大家仔细理解,并且使用C语言和python语言实现获取子进程退出时候的退出状态码. 程序退出状态码 前言 在本篇文章当中主 ...

最新文章

  1. Sublime-text theme 颜色主题
  2. sqlite java excel,Android将Excel表数据导入SQLite数据库
  3. 银行启动开放战略,能否赢回金融科技下半场?
  4. lstm处理时序数据结构图_详解LSTM
  5. 1355. 母亲的牛奶【一般 / DFS爆搜】
  6. 最小路径和—leetcode64
  7. 使用MeanJS Yeoman Generator
  8. mysql查询重复数据
  9. 从武汉模式走向中国模式,打造人工智能产业发展的“中国样板”
  10. 关于序列化的 10 几个问题,你肯定不知道
  11. 002--YAML工具
  12. 曾国藩36字深入解读-借智慧
  13. win10安装.net framework 3.5 错误代码 错误代码 0x800F0906、0x800F081F、0x800F0907
  14. FlashVml2.0(WEB上的PhotoShop+Flash、VML最强开发工具)[推荐]
  15. 微信小程序 -语音合成:将文字转为语音(小程序插件:微信同声传译)
  16. msvcr120.dll丢失怎样修复?msvcr120.dll文件修复方法
  17. 人工智能的马克思主义审视
  18. 学法语的你伤不起之吐槽各种语言
  19. REVERSE-COMPETITION-HGAME2022-Week3
  20. 手写一个json格式化 api

热门文章

  1. Discuz支持反对提示:抱歉您的请求来路不正确或表单无法提交的解决方法
  2. process is bad
  3. 攻击者接管账户,攻陷周下载量超700万次的JavaScript 流行库 ua-parser-js
  4. Windows 365 以明文形式暴露微软 Azure 凭据
  5. 详细分析已遭利用的 Desktop Window Manager 0day
  6. Flutter实战5 -- 天气查询APP重构之状态管理(ScopedModel)
  7. ArcGIS API for Silverlight开发入门(2):一个基础地图实例
  8. 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错
  9. POST 一张 图像的调试来认识 http post
  10. IDC简报:6月份国外最佳虚拟主机提供商Top5