使用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 $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状态相关推荐
- 模拟get和post请求(支持自定义header和测试CDN节点)
下面是一个模拟get或者post请求的方法支持 1.get,post方法 2.自定义参数 3.自定义header 4.返回服务器的返回内容和header 5.支持相特定的服务器请求url,适合测试cd ...
- Shell编程——退出状态(if语句判断某个命令的退出状态)
以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除. 一.退出状态 (1)不管是 Bash 内置命令,还是外部的 Linux 命令,还是自定义的 Shell 函数,当它运行结束或者退出时,都会 ...
- SHELL学习——退出状态、测试(整数\字符串\ 文件\逻辑运算符)
退出状态 在Linux系统中,第当命令执行完成后,系统都会有一个退出状态.该退出状态用一整数值表示,用于判断命令运行正确与否. 状态值 含义 0 表示运行成功,程序执行未遇到任何问题 1-125 ...
- httplib模块,测试cdn节点文件同步
httplib模块是一个专门用于http的模块,urllib和urllib2也都是基于对它进行了更上层次的封装 我记得刚开始的时候,公司用的cdn有段时间抽风,全球40多个节点总是有那么几个节点 不同 ...
- 中国大学慕课MOOC ,Shell测试答案
八 关于Shell编程 1.Shell中的环境变量有PATH.SHELL.HOME. 2.在Linux系统中编写Shell脚本程序,第一行应该写#! /bin/bash. 3.查看Linux系统中环境 ...
- Microsoft Windows 7.0 build 7000 NAP测试--健康状态检测验证报告
第一份已经发布的测试报告主要是针对Windows 7.0 build 7000的一个功能概览,让大家看看Windows 7.0的主要更新和一些新特性的展现.那么大多数东西是粗浅的,没有细细的品味Win ...
- python中执行shell脚本之subprocess模块_如何使用Python中的subprocess模块检查shell脚本的状态?...
我有一个简单的Python脚本,它将使用Python中的subprocessmdoule来执行shell脚本.在 下面是我的pythonshell脚本,它正在调用testing.shshell脚本,它 ...
- Linux篇:shell脚本监控主机状态的3种方式
01 前言 shell的基础语法学习告了一段路,现在开始实际操作练习,今天记录的是shell脚本的经典题目 监控主机或IP的状态,并给出提示,如以下背景: 编写脚本判断以下4个主机的状态 181.13 ...
- Shell程序退出状态码的命令详解
在本篇文章当中主要给大家介绍了一些常见的程序退出的状态码!并且给出一下例子帮助大家仔细理解,并且使用C语言和python语言实现获取子进程退出时候的退出状态码. 程序退出状态码 前言 在本篇文章当中主 ...
最新文章
- Sublime-text theme 颜色主题
- sqlite java excel,Android将Excel表数据导入SQLite数据库
- 银行启动开放战略,能否赢回金融科技下半场?
- lstm处理时序数据结构图_详解LSTM
- 1355. 母亲的牛奶【一般 / DFS爆搜】
- 最小路径和—leetcode64
- 使用MeanJS Yeoman Generator
- mysql查询重复数据
- 从武汉模式走向中国模式,打造人工智能产业发展的“中国样板”
- 关于序列化的 10 几个问题,你肯定不知道
- 002--YAML工具
- 曾国藩36字深入解读-借智慧
- win10安装.net framework 3.5 错误代码 错误代码 0x800F0906、0x800F081F、0x800F0907
- FlashVml2.0(WEB上的PhotoShop+Flash、VML最强开发工具)[推荐]
- 微信小程序 -语音合成:将文字转为语音(小程序插件:微信同声传译)
- msvcr120.dll丢失怎样修复?msvcr120.dll文件修复方法
- 人工智能的马克思主义审视
- 学法语的你伤不起之吐槽各种语言
- REVERSE-COMPETITION-HGAME2022-Week3
- 手写一个json格式化 api
热门文章
- Discuz支持反对提示:抱歉您的请求来路不正确或表单无法提交的解决方法
- process is bad
- 攻击者接管账户,攻陷周下载量超700万次的JavaScript 流行库 ua-parser-js
- Windows 365 以明文形式暴露微软 Azure 凭据
- 详细分析已遭利用的 Desktop Window Manager 0day
- Flutter实战5 -- 天气查询APP重构之状态管理(ScopedModel)
- ArcGIS API for Silverlight开发入门(2):一个基础地图实例
- 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错
- POST 一张 图像的调试来认识 http post
- IDC简报:6月份国外最佳虚拟主机提供商Top5