linux中利用curl命令批量检查连接的状态和文件的MD5值比对

最近在一次更新中,出了一个小规模的事故。大概情况就是,CDN已经正常推好了,但是开发那边却说有些数据没有在CDN上。这就很疑惑,日常的更新一般都是更新后,随便找几个主目录下的文件试一下是否CDN推送成功的,但是那次不知道怎么回事。反正~不是我的问题。 我不背锅。

为了避免这一个情况,所以去搞了个shell脚本。这是一个检测http链接状态跟对比MD5值的脚本,希望对你有所帮助 :frowning:

检测HTTP状态

1
2
3
4
5
6
7
8
9
#!/bin/bash
for i in `cat url.txt`
do
HTTP_CODE=`curl -o /dev/null -s -w %{http_code} $i` #<strong>-o 参数,是把下载的所有内容都重定向到/dev/null,-s命令,是屏蔽了curl本身的输出,而-w参数,是根据我们自己的需要,自定义了curl输出格式。</strong>
if [[ "$HTTP_CODE" == "404" ]]
then
echo -e "$i" >>404url.txt
fi
done

MD5值比对

1
2
3
4
5
6
7
8
9
for((i=0;i<1000;i++))
do
curl www.baidu.com -k -s -o /home/${i}.result -D - >/home/${i}.log #下载文件和响应信息
result=`md5sum /home/${i}.result | awk '{print $1}'`
if [ ${result} != "a6c4b5d58389762e8e7f67c8a3515d3f" ]#定义你检查文件的MD5值
then
echo $result , ${i}
fi
done