Shell 命令行,实现对若干网站状态批量查询是否正常的脚本
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 命令行,实现对若干网站状态批量查询是否正常的脚本的更多相关文章
- Shell 命令行统计 apache 网站日志访问IP以及IP归属地
Shell 命令行统计 apache 网站日志访问IP以及IP归属地 我的一个站点用 apache 服务跑着,积攒了很多的日志.我想用 shell 看看有哪些人访问过我的站点,并且他来自哪里. 因为日 ...
- 7个基于Linux命令行的文件下载和网站浏览工具
7个基于Linux命令行的文件下载和网站浏览工具 时间:2015-06-01 09:36来源:linux.cn 编辑:linux.cn 点击: 2282 次 Linux命令行是GNU/Linux中最神 ...
- 自学Linux Shell2.1-进入shell命令行
点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 进入文本命令行界面(CLI)两种方法: 控制台终端 图形化终端 1. 通过Linux控制台终端访问CLI 按下Ctrl ...
- Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本
Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本 不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来.但是下载什么站点我确不知道.今天尝试了一下利用 curl ...
- Python 分页和shell命令行模式
前言 除了手动添加你的文章后外,你还可以用命令行来添加,python 自带了一种命令行 就是 shell 快速添加博文:Shell命令行模式 在你的目录下:mysite python manage.p ...
- 几种在shell命令行中过滤adb logcat输出的方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adblog ...
- Hadoop HDFS的shell(命令行客户端)操作实例
HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs ...
- 〖Linux〗使用命令行切换触摸板的状态on/off/toggle
最近发现在Ubuntu13.10中使用Fn+F9对触摸板的控制操作不灵了: 并且在黑夜.外置键盘时,按下这个组合键也很不方便,由此便想到使用命令行来切换触摸板状态: 脚本:~/bin/touchpad ...
- Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本
Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...
随机推荐
- 20145322何志威 《Java程序设计》第8周学习总结
教材学习内容总结 第十四章 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rewind(),flip(),compact()等高级操作. 想要取得channel的 ...
- 【前端】Flex 布局教程:语法篇 [转]
网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...
- 【前端】javascript中10常用的个小技巧总结
javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了 ...
- 混合开发的大趋势之一React Native之页面跳转(2)+物理返回+特定平台代码
转载请注明出处:这里写链接内容 今天是10月份的最后一天,我加了3个月来的第一个班,挤出了这篇. 废话不多先安利,然后继续学习 RN 有好东西都往里面丢,努力做好归纳 https://github.c ...
- BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&树状数组
点我看题 这题十分奇淫技巧...QAQ因为知道是树状数组的题QAQ刚开始以为维护两个数组的树状数组然后模拟从大到小,然后发现不会打QAQ 于是悄悄咪咪翻开题解了. 实际上两个数组可以看做一个数组 如 ...
- 线程实现Runnable接口比继承Thread的优势
1.适合多个相同程序代码的线程去处理同一资源,把虚拟CPU(线程)同程序的代码.数据有效分离,较好地体现了面向对象的设计思想.2.可以避免由于java单继承特性带来的局限.3.增强了程序的健壮性,代码 ...
- AD 域中给AD 用加登录本地计算的权限
说明:一般新添加的AD 用户没有登录计算机电脑的权限,如果需要添加登录权限. 步骤:1.打开Active Directory 用户和计算机 步骤:2.打开某个用户 步骤3; 如下图.
- [异常记录(三)] 从 bcp 客户端收到一个对 colid 12 无效的列长度
这个问题是使用SqlBulkCopy拷贝数据,字符串长度超出数据类型长度导致的. 处理过程中对长度进行判断并截取就OK了. *注:SqlBulkCopy 这货 要求ColumnMappings 列的大 ...
- LA 5846 霓虹灯广告牌(单色三角形问题)
https://vjudge.net/problem/UVALive-5846 题意: 圆周上有n个点,两两相连,只能涂红色或蓝色.求单色三角形的个数. 思路: 这个问题在训练指南105页有详细讲解. ...
- 修改sublime侧边栏的颜色
Ctrl+Shift+P -> install -> 搜索安装包SyncedSidebarBg,自动同步侧边栏底色为编辑窗口底色.