Shell 命令行,实现对若干网站状态批量查询是否正常的脚本
2017-08-03 17:05
711 查看
Shell 命令行,实现对若干网站状态批量查询是否正常的脚本
如果你有比较多的网站,这些网站的运行状态是否正常则是一件需要关心的事情。但是逐一打开检查那简直是一件太糟心的事情了。所以,我想写一个 shell 脚本来实现对若干网站进行批量状态查询的脚本。原理没什么要解释的,就是使用
curl -I对网站的状态码进行查询。轮着查就是了。
文件准备
在要执行的脚本文件夹下面创建两个文件和一个文件夹,分别是文件、文件夹 | 说明 |
---|---|
./watch.sh | 我们的批量查询脚本文件 |
./siteList.txt | 我们的域名列表文件 |
./log/ | 存放日志的文件夹 |
siteList.txt 文件内容
www.youtube.com www.google.com www.xxx.com www.baidu.com www.sina.com.cn www.weibo.com www.sohu.com www.renren.com
如上的域名列表,一行一个,把你的网站全写进去即可。
实现 shell 脚本
logfile='./log/webSite-Status-'`date '+%Y%m%d'`'.log' #touch $logfile echo '--- watch web site by Fungleo ---' >> $logfile echo '--- Web:blog.csdn.net/fungleo ---' >> $logfile echo '--- Begin '`date '+%Y-%m-%d %H:%M:%S'`' ---' >> $logfile sitelist=siteList.txt i=0 l=$(wc -l $sitelist | sed 's/^[ \t]*//g' | cut -d ' ' -f1) while read url; do # 进度百分比 echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%' ((i++)) # 运行内容 #result=$(curl --connect-timeout 3 -sI $url ) result=$(curl --connect-timeout 3 -sL -D- $url -o /dev/null) curl_status=$? if [[ $curl_status -eq 0 ]]; then status=$(echo $result | grep HTTP | cut -d ' ' -f2) else status='die' fi echo 'status:'$status' | curl status:'$curl_status' | site:'$url >> $logfile done < $sitelist; echo -e '--- End '`date '+%Y-%m-%d %H:%M:%S'`' ---\n' >> $logfile echo -e '\b\b\b\bOK '
解释原理
根据当前时间创建一个日志文件,存放在./log/文件夹下
输出开头的一些内容,可以自行调整
获取域名列表文件并存放到变量
计算进度百分比内容,更多参考 Shell 循环中实现展示进度百分比的脚本方法
curl去查状态码,超过3秒就认为是失败了。时间可以自定义。
根据执行结果判断是否正常,正常就返回正常的
HTTP状态码,否则输出
die
将执行结果输出到日志文件
打印完成时间
在终端标准输出
ok表示脚本执行完成。
后续
在curl -I www.qq.com的时候,长时间没有响应,不知道为什么。可能是QQ网站禁止这样查询。但如何跳过不知道怎么解决,我是设定了超出时间的。比较奇怪,有知道的朋友告诉我一下。
上网查了一下相关资料,将
result=$(curl --connect-timeout 3 -sI $url )更换为
result=$(curl --connect-timeout 3 -sL -D- $url -o /dev/null)就解决了查 www.qq.com 会停止响应的问题。因为有一些网站会屏蔽掉
head查询。
算解决了。你有更好的方法吗?
在 MAC 下,这个脚本用
sh watch.sh执行会轻微出错,必须用
bash watch.sh执行。
或
chmod +x ./watch.sh赋予执行权限后
./watch.sh执行。
以上脚本均在 mac 下测试通过,在 Linux 下可能会有稍许不同。
本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。
相关文章推荐
- shell脚本wget crul监控某网站是否正常
- 简单监控网站访问是否正常的shell脚本,邮件报警。网站恢复后继续运行。
- shell脚本实现批量测试局域网主机是否在线
- 监控网站是否可以正常打开的Shell脚本分享
- PHP实现批量检测网站是否能够正常打开的方法
- Shell脚本 检查网站是否正常浏览
- 监控网站是否可以正常打开的Shell脚本分享
- PHP实现批量检测网站是否能够正常打开的方法
- 企业Shell实战-批量检查多个网站地址是否正常
- shell脚本实现批量测试局域网主机是否在线
- 案例:Shell脚本检测网站url是否正常运行
- Shell脚本实现监控rsync数据是否传输完
- Shell脚本监控WEB服务是否正常
- Shell脚本实现监视指定进程的运行状态
- 利用Shell脚本实现远程MySQL自动查询
- Shell脚本实现批量下载网络图片代码分享
- shell脚本检查网站状态
- 脚本实现检测nginx服务是否正常
- shell脚本监控MySQL服务是否正常
- 【原创】一个shell脚本记录(实现rsync生产文件批量迁移功能)