Shell 命令行,实现对若干网站状态批量查询是否正常的脚本
来源:互联网 发布:java 全角半角转换 编辑:程序博客网 时间:2024/06/05 11:15
Shell 命令行,实现对若干网站状态批量查询是否正常的脚本
如果你有比较多的网站,这些网站的运行状态是否正常则是一件需要关心的事情。但是逐一打开检查那简直是一件太糟心的事情了。所以,我想写一个 shell 脚本来实现对若干网站进行批量状态查询的脚本。
原理没什么要解释的,就是使用 curl -I
对网站的状态码进行查询。轮着查就是了。
文件准备
在要执行的脚本文件夹下面创建两个文件和一个文件夹,分别是
当然,你不需要完全按照我的设计来,但是需要知道一一对应的知道文件关系。
siteList.txt 文件内容
www.youtube.comwww.google.comwww.xxx.comwww.baidu.comwww.sina.com.cnwww.weibo.comwww.sohu.comwww.renren.com
如上的域名列表,一行一个,把你的网站全写进去即可。
实现 shell 脚本
logfile='./log/webSite-Status-'`date '+%Y%m%d'`'.log'#touch $logfileecho '--- watch web site by Fungleo ---' >> $logfileecho '--- Web:blog.csdn.net/fungleo ---' >> $logfileecho '--- Begin '`date '+%Y-%m-%d %H:%M:%S'`' ---' >> $logfilesitelist=siteList.txti=0l=$(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 >> $logfiledone < $sitelist;echo -e '--- End '`date '+%Y-%m-%d %H:%M:%S'`' ---\n' >> $logfileecho -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 命令行,实现对若干网站状态批量查询是否正常的脚本
- 案例:Shell脚本检测网站url是否正常运行
- shell 监控网站是否异常的脚本
- 检测mysql主从复制是否正常的shell脚本
- 批量检测Mysql复制状态的shell 脚本
- shell脚本使用curl获取访问网站的状态码
- Shell整理--检查WEB是否正常脚本(附PHP脚本)
- linux shell脚本自动检测apache服务是否正常的诡异问题
- Linux Shell 检测WebSphere(WAS)服务状态是否正常
- 对网站重构的若干理解
- 判断system()执行shell脚本是否正常执行结束
- shell脚本监控集群FTP是否正常,可上传下载文件
- linux shell script脚本判断mysql是否正常启动
- shell脚本实现某一进程是否运行结束的监控
- Android的短信批量处理,删除前还要查询是否锁定状态
- [Shell脚本工具]-01批量检测服务器接口状态码
- 通过shell批量检测集群跑数据是否异常脚本
- 用shell脚本实现对博客的定时备份
- Generator函数基础
- ZooKeeper详细解析
- 哈希表的设计与实现
- Android RecyclerView <二> fragment+ItemDecoration
- 线段的重叠 51Nod
- Shell 命令行,实现对若干网站状态批量查询是否正常的脚本
- Fence Repair
- 88. Merge Sorted Array(java)
- Xamarin Android Activity之间跳转与传值
- 安卓获取包名,版本号,
- linux 下用户栈最大值
- CDH集群安装部署
- 使用层次聚类在结构点云中进行平面的快速提取
- 快速幂非递归实现