• 如何监控网站URL是否正常?


    监控网站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} " -o /dev/null  www.baidu.com
    200

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

    解答:
    方法1:
     1 #!/bin/sh
     2 #帮助函数usage()
     3 function usage() {     
     4     echo $"usage:$0 url"
     5     exit 1
     6 }
     7 #检测URL函数check_url()
     8 function check_url() { 
     9      #<==采用wget返回值方法,这里的$1就是函数传参。     
    10     wget --spider -q -o /dev/null --tries=1 -T 5 $1
    11     #curl -s -o /dev/null $1 #<==采用curl返回值方法也是可以的。
    12     if [ $? -eq 0 ]
    13     then
    14         echo "$1 is yes."
    15         exit 0
    16     else
    17         echo "$1 is fail."
    18         exit 1
    19     fi
    20 }
    21 function main() {   #<==主函数。
    22      if [ $# -ne 1 ]   #<==如果传入的多个参数,则打印帮助函数,提示用户。
    23      then
    24          usage
    25       else
    26          check_url $1     #<==接收函数的传参,即把结尾的$*传到这里。
    27       fi
    28 }
    29 main $*            #<==这里的$*就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。
    30 实践结果:
    31 [root@localhost ~]# sh checkurl.sh www.baidu.com
    32 www.baidu.com is ok
    33 [root@oldboy ~]# sh checkurl.sh 10.0.0.8
    34 10.0.0.8 is fail
    35 方法2:
    36 [root@localhost ~]# cat checkurl1.sh
    37 #!/bin/bash
    38 ##############################################################
    39 # File Name: checkurl.sh
    40 # Version: V1.0
    41 # Author: oldboy
    42 # Organization: https://www.cnblogs.com/putihuakai/
    43 # Created Time : 2019-06-07 18:29:19
    44 ##############################################################
    45 usage(){
    46     echo "Usage:$0 url"
    47     exit 1
    48 }
    49 checkurl(){
    50     local num=`curl -I -m 5 -s -w "%{http_code}
    " -o /dev/null|grep 200|wc -l`
    51     if [ $num -eq 1 ] #<==采用获取状态码,并转为数字的方式判断,如果301认为正确也可以加上egrep过滤。
    52     then
    53          echo "$1 is ok"
    54     else
    55          echo "$1 is fail"
    56     fi
    57 }
    58 main(){
    59     if [ $# -ne 1 ]
    60     then
    61         usage
    62     else
    63     checkurl $1
    64     fi
    65 }
    66 main $*
    实践结果:
    [root@localhost ~]# sh checkurl.sh www.baidu.com
    [root@localhost ~]# sh checkurl.sh 10.0.0.8
    10.0.0.8 is fail

     

  • 相关阅读:
    canvas 学习
    configure/autoconf/automake文件相关
    git add A 和 git add . 的区别详解
    Vim格Vim格式化代码功能——gg=G式化代码功能——gg=G
    详解git commit amend 用法
    git reset HEAD 与 git reset hard HEAD的区别 天地逍遥
    git的撤销操作:reset、checkout和revert
    参与linux社区
    git制作补丁
    git diff、git diff head、git diff cached三者详细区分
  • 原文地址:https://www.cnblogs.com/putihuakai/p/11397873.html
Copyright © 2020-2023  润新知