监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大的,强大到网友查看帮助都无从选择的地步了,今天呢,老男孩老师正好录制Shell编程实战课程,因此,顺便总结了一下和大家分享。

1.1  wget命令

wget命令的参数非常多,至少也有数十个, 但是运维工作中常用的并不多,老男孩老师把最有用的列表如下。
wget命令
下载网页或文件
--spider
模拟爬虫的行为去访问网站,但不会下载网页
-q,    --quiet
安静的访问,禁止输出,类似-o /dev/null功能
-o,    --output-file=FILE
记录输出到文件
-T,    --timeout=SECONDS
访问网站的超时时间
-t,    --tries=NUMBER
当网站异常时重试网站的次数
实际监控方法如下:利用wget命令返回值确定网站是否正常
[root@oldboy ~]# wget --spider -T 5 -q -t 2  http://www.baidu.com/index.html
[root@oldboy ~]# echo $?   #<==利用返回值确定网站是否正常。
0

1.2  curl命令

curl命令的参数比wget的参数还多,但运维中常用的参数也并不多,因此也是列表如下:
curl命令
访问网站url
-I/--head
显示响应头信息
-m/--max-time <seconds>
访问超时的时间
-o/--output <file>
记录访问信息到文件
-s/--silent
沉默模式访问,就是不输出信息
-w/--write-out <format>
以固定特殊的格式输出,例如:%{http_code},输出状态码
 
实际监控方法如下:
1、利用curl命令返回值确定网站是否正常
[root@localhost ~]# curl -s -o /dev/null www.baidu.com
[root@localhost ~]# echo $?
0
2、获取命令执行后的状态码(200表示正常)
[root@localhost ~]# curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null  www.baidu.com
200

1.3 开发Shell脚本实现监控指定的URL是否正常

解答:
方法1:
 #!/bin/sh
#帮助函数usage()
function usage() {
echo $"usage:$0 url"
exit 1
}
#检测URL函数check_url()
function check_url() {
#<==采用wget返回值方法,这里的$1就是函数传参。
wget --spider -q -o /dev/null --tries=1 -T 5 $1
#curl -s -o /dev/null $1 #<==采用curl返回值方法也是可以的。
if [ $? -eq 0 ]
then
echo "$1 is yes."
exit 0
else
echo "$1 is fail."
exit 1
fi
}
function main() { #<==主函数。
if [ $# -ne 1 ] #<==如果传入的多个参数,则打印帮助函数,提示用户。
then
usage
else
check_url $1 #<==接收函数的传参,即把结尾的$*传到这里。
fi
}
main $* #<==这里的$*就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。
实践结果:
[root@localhost ~]# sh checkurl.sh www.baidu.com
www.baidu.com is ok
[root@oldboy ~]# sh checkurl.sh 10.0.0.8
10.0.0.8 is fail
方法2:
[root@localhost ~]# cat checkurl1.sh
#!/bin/bash
##############################################################
# File Name: checkurl.sh
# Version: V1.0
# Author: oldboy
# Organization: https://www.cnblogs.com/putihuakai/
# Created Time : 2019-06-07 18:29:19
##############################################################
usage(){
echo "Usage:$0 url"
exit 1
}
checkurl(){
local num=`curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null|grep 200|wc -l`
if [ $num -eq 1 ] #<==采用获取状态码,并转为数字的方式判断,如果301认为正确也可以加上egrep过滤。
then
echo "$1 is ok"
else
echo "$1 is fail"
fi
}
main(){
if [ $# -ne 1 ]
then
usage
else
checkurl $1
fi
}
main $*
实践结果:
[root@localhost ~]# sh checkurl.sh www.baidu.com
[root@localhost ~]# sh checkurl.sh 10.0.0.8
10.0.0.8 is fail

如何监控网站URL是否正常?的更多相关文章

  1. Zabbix监控Low level discovery实时监控网站URL状态

    今天我们来聊一聊Low level discovery这个功能,我们为什么要用到loe level discovery这个功能呢? 很多时候,在使用zabbix监控一些东西,需要对类似于Itens进行 ...

  2. zabbix免客户端监控网站URL

    1.我们需要在zabbix服务器端(这台服务器需要能正常上网)同时安装zabbix-agent客户端,使其正常监控zabbix服务器 2.创建web监测 点击web监测 创建web监测 3.配置异常报 ...

  3. 利用wget 和 curl 监控网站是否正常

    监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大,参数也非常多,下面列举几个常用的参数. wget  常用命令参数:--spider              ...

  4. Python监控网站接口值

    Python监控网站接口值: #!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'liudong' import urllib,sy ...

  5. shell脚本监控网站状态

    shell脚本监控网站状态 #!/bin/sh date=`date +"%Y%m%d-%H%M"` title="status" contentFail=&q ...

  6. 巧妙使用Firebug插件,快速监控网站打开缓慢的原因

    原文 巧妙使用Firebug插件,快速监控网站打开缓慢的原因 很多用户会问,我的网站首页才50KB,打开网页用了近60秒才打开?如何解释? 用户抱怨服务器运行缓慢,w3wp.exe 出现 CPU 10 ...

  7. shell监控网站是否自动运行并自动重启【原创】

    shell监控网站是否自动运行并自动重启 #!/bin/bash -T www.baidu.com ];then echo "`date` 网站访问正常!" >> /r ...

  8. (转)nginx下基于ThinkPHP框架的网站url重写

    nginx下基于ThinkPHP框架的网站url重写nginx下的基于thinkphp的应用的url重写,需了解thinkphp的各种url格式参数的处理逻辑以及nginx重写的原理.简单点说,无论哪 ...

  9. 为什么网站URL需要设置为静态化

    http://www.wocaoseo.com/thread-95-1-1.html       为什么网站URL需要静态化?网站url静态化的好处是什么?现在很多网站的链接都是静态规的链接,但是网站 ...

随机推荐

  1. java并发编程(九)ThreadLocal & InheritableThreadLocal

    参考文档: https://blog.csdn.net/u012834750/article/details/71646700 threadlocal内存泄漏:http://www.importnew ...

  2. kafka(四) 网络通讯

    参考文章 http://www.jianshu.com/p/eab8f15880b5 kafka nio通信机制:http://ifeve.com/kafka-nio/ 通讯协议:tcp 网络模型:

  3. 【2019年05月16日】A股最便宜的股票

    查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 经典价值三因子选股: 市盈率PE.市净率PB 和 股息分红率,按照 1:1:1的权重,选择前10大最便宜的股票. ...

  4. Java8 流式 API(`java.util.stream`)

    熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...

  5. 【mysql】'XXX.XXX.XXX' isn't in GROUP BY问题解决

    原因是mysql的版本低于5.7,使用的GROUP BY 例如:数据库名称为db,表为t,sql为SELECT id, user_name FROM sys_user GROUP BY id 报错为 ...

  6. JAVA并发编程: CAS和AQS

       版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/u010862794/article/details/72892300 说起JAVA并发编程,就不得不聊 ...

  7. FMC与FPGA双口ram通讯

    硬件环境:ARM+FPGA通过FMC互联,STM32F767和 EP4CE15F23I7 FMC设置,STM的系统时钟HCLK为216MHz /* FMC initialization functio ...

  8. Python 监控脚本

    Python 监控脚本 整体通过psutil模块动态获取资源信息.下为示例图: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time: 2019- ...

  9. Linux ssh 公私钥配置

    Linux ssh 公私钥配置 ssh 公私钥可实现无密码的情况下直接直接登录到服务端.方便我们管理,而且也可以设置ssh完全通过公私钥登录,不可通过密码登录,来提高我们的服务器安全程度. 配置 生成 ...

  10. 推荐一个GOLANG入门很好的网址

    推荐一个GOLANG入门很好的网址,栗子很全 https://books.studygolang.com/gobyexample/