监控网站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. LEDE安装zerotier 无法启动解决方法

    进入命令行模式,vi /etc/config/zerotier文件,把option enabled '0'的0改为1.

  2. Java基础之十三 字符串

    第十三章 字符串 13.1 不可变String String对象是不可变的.String类中每一个看起来会修改String值得方法,实际上都是创建了一个全新得String对象,以包含修改后得字符串内容 ...

  3. ASP.NET Core Swagger接入使用IdentityServer4 的 WebApi

    写在前面 是这样的,我们现在接口使用了Ocelot做网关,Ocelot里面集成了基于IdentityServer4开发的授权中心用于对Api资源的保护.问题来了,我们的Api用了SwaggerUI做接 ...

  4. ASP.NET Core WebApi基于JWT实现接口授权验证

    一.ASP.Net Core WebApi JWT课程前言 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再 ...

  5. build gradle dependencies闭包的详解

    转 :https://blog.csdn.net/guanguanboy/article/details/91043641 dependencies闭包的整体功能是指定当前项目所有依赖关系:本地依赖. ...

  6. 【Appium + Python3】之安卓8.1,使用xpath定位不到元素

    desired_cap = { "deviceName":"vivo", # 真机名称 "platformName":"andro ...

  7. Sitecore 8.2 Admin用户帐户解锁

    如果您有权访问数据库,则可以使用SQL Management Studio运行以下查询来解锁您的sitecore管理员或任何其他用户帐户 : UPDATE aspnet_Membership SET  ...

  8. kubernetes支持local volume

    目录 local volume 创建一个storage class 静态创建PV 使用local volume PV 动态创建PV local volume kubernetes从1.10版本开始支持 ...

  9. B/S架构详解

    学习笔记:  * B/S架构详解 * 资源分类:            1. 静态资源:                * 使用静态网页开发技术发布的资源.                * 特点:  ...

  10. 用友U9 UFSoft.UBF.Business.Session

    Session的概念 在现在UBF中,Session的本意是work unit,即持久层的一个边界,非常轻,主要用作批量提交,并标识这次批量提交的边界,不涉及到事务等概念. 当前ISession可以通 ...