前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Shell脚本程序监控网站URL是否正常

使用Shell脚本程序监控网站URL是否正常

原创
作者头像
用户4988085
修改2021-07-26 11:06:12
1.5K0
修改2021-07-26 11:06:12
举报
文章被收录于专栏:建站知识建站知识

wget命令

wget命令的参数非常多,至少也有数十个, 但是运维工作中常用的并不多,老男孩老师把最有用的列表如下。

代码语言:javascript
复制
 wget命令 	 下载网页或文件
 --spider 	 模拟爬虫的行为去访问网站,但不会下载网页
 -q, --quiet 	 安静的访问,禁止输出,类似-o /dev/null功能
 -o, --output-file=FILE 	 记录输出到文件
 -T, --timeout=SECONDS 	 访问网站的超时时间
 -t, --tries=NUMBER 	 当网站异常时重试网站的次数

实际监控方法如下:利用wget命令返回值确定网站是否正常

代码语言:javascript
复制
  [root@oldboy ~]# wget --spider -T 5 -q -t 2 www.xxx.com

  [root@oldboy ~]# echo $? #< ==利用返回值确定网站是否正常。

  0

curl命令

curl命令的参数比wget的参数还多,但运维中常用的参数也并不多,因此也是列表如下:

代码语言:javascript
复制
 curl命令 	 访问网站url
 -I/--head 	 显示响应头信息
 -m/--max-time 	 访问超时的时间
 -o/--output 	 记录访问信息到文件
 -s/--silent 	 沉默模式访问,就是不输出信息
 -w/--write-out 	 以固定特殊的格式输出,例如:%{http_code},输出状态码

实际监控方法

1、利用curl命令返回值确定网站是否正常

代码语言:javascript
复制
  [root@oldboy ~]# curl -s -o /dev/null www.xxx.com

  [root@oldboy ~]# echo $?

  0

2、获取命令执行后的状态码(200表示正常)

代码语言:javascript
复制
  [root@oldboy ~]# curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null www.baidu.com

  200

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

代码语言:javascript
复制
  解答:

  方法1:

  #!/bin/sh

  function usage() { #< ==帮助函数

  echo $"usage:$0 url"

  exit 1

  }

  function check_url() { #<==检测URL函数。

  wget --spider -q -o /dev/null --tries=1 -T 5 $1

  #<==采用wget返回值方法,这里的$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

  fi

  check_url $1 #<==接收函数的传参,即把结尾的$*传到这里。

  }

  main $* #<==这里的$*就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。

实践结果

代码语言:javascript
复制
  [root@oldboy ~]# sh checkurl.sh www.xxx.com

  www.oldboyedu.com is ok

  [root@oldboy ~]# 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@oldboy ~]# cat checkurl1.sh

  #!/bin/bash

  ##############################################################

  # File Name: checkurl.sh

  # Version: V1.0

  # Author: oldboy

  # Organization: www.oldboyedu.com

  # Created Time : 2018-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

  fi

  checkurl $1

  }

  main $*

实践结果

代码语言:javascript
复制
  [root@oldboy ~]# sh checkurl.sh www.xxx.com

  www.oldboyedu.com is ok

  [root@oldboy ~]# 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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档