Linux网络脚本:批量检测一组网站是否可访问的bash脚本的实现和详细介绍

目录

一、要求

二、分析

三、脚本代码

四、代码解释

1、URL_LIST的数组

2、循环

4. 在循环体内部计数器初始化

5. curl命令

6. 请求成功标志

7. 请求失败

五、代码执行

1、设置权限

2、命令执行效果

六、优点

1. 简单易写

2. 轻量级

3. 方便调度

4. 集成性强

5. 易于修改和维护

6. 成本低


一、要求

为了及时发现并解决网站访问问题,需要批量检测一组网站是否可访问。

二、分析

可以把网站放到一个URL列表中,然后检查URL列表中的每个URL是否可访问,对每个URL最多尝试3次访问。如果某个URL在3次尝试后仍然无法访问(即HTTP响应码不是200),则输出一个警告信息。

三、脚本代码

直接给出bash的脚本代码,如下:

#!/bin/bash
URL_LIST=("www.baidu.com" "www.vidisit.cn" "https://www.csdn.net" "https://www.gusu.gov.cn/")
for URL in "${URL_LIST[@]}"; do
  # 循环体

# URL_LIST="www.baidu.com www.vidisit.cn"
# for URL in $URL_LIST; do
  FAIL_COUNT=0
  for ((i=1;i<=3;i++)); do
    HTTP_CODE=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL)
    if [ $HTTP_CODE -eq 200 ]; then
      echo "$URL OK"
      break
    else
      echo "$URL retry $FAIL_COUNT"
      let FAIL_COUNT++
    fi
  done
  if [ $FAIL_COUNT -eq 3 ]; then
    echo "Warning: $URL Access failure!"
  fi
done

四、代码解释

1、URL_LIST的数组

 URL_LIST=("www.baidu.com" "www.vidisit.cn" "https://www.csdn.net" "https://www.gusu.gov.cn/"):定义了一个名为URL_LIST的数组,其中包含要检查的多个URL地址。

2、循环

 for URL in "${URL_LIST[@]}"; do ... done:

这是一个循环,遍历URL_LIST数组中的每一个元素(即每个URL),并将其临时赋值给变量URL。花括号内的@符号表示数组中的所有元素。

4. 在循环体内部计数器初始化

失败计数器FAIL_COUNT初始化为0。

5. curl命令

通过一个内嵌的for ((i=1;i<=3;i++)); do ... done循环尝试对每个URL进行最多三次访问。每次尝试都使用curl命令发送请求:

   -o /dev/null:丢弃curl输出的内容。

   --connect-timeout 3:设置连接超时时间为3秒。

   -s:静默模式,不显示进度表或错误信息。

   -w "%{http_code}":写入操作完成后的指定格式输出,这里是指定输出HTTP状态码到变量HTTP_CODE中。

6. 请求成功标志

如果获取到的HTTP状态码HTTP_CODE等于200,表示请求成功,打印出“$URL OK”,并跳出循环。否则增加失败计数器FAIL_COUNT,并打印出重试的信息。

7. 请求失败

如果经过三次尝试之后,仍然没有成功(即FAIL_COUNT等于3),则打印出警告信息:“Warning: $URL Access failure!”

五、代码执行

1、设置权限

定义脚本的名字为:monitor_http.sh;

输入代码后,保存起来,实际操作如下:

然后赋予执行权限,如下:

2、命令执行效果

输入命令:

./monitor_http.sh,

执行脚本

实际操作如下:

      

更改其中一个url,其中一个url改成:https://www.gusu123.gov.cn/

看看失败的情况。实际操作如下:

六、优点

使用Bash脚本来实现上述功能有以下几个好处:

1. 简单易写

Bash脚本语法相对简单,对于一些基本的任务如循环、条件判断等,编写起来非常快捷。对于上述功能,不需要复杂的编程知识就可以实现。

2. 轻量级

Bash脚本运行时不需要额外的资源或环境,因为它直接运行在Unix/Linux系统上。这使得它非常适合用来执行一些自动化任务和简单的服务器监控工作。

3. 方便调度

可以很容易地将Bash脚本设置为定时任务(例如通过`cron`),以定期检查网站的可达性。这对于监控网站健康状态特别有用。

4. 集成性强

Bash脚本可以直接调用Linux系统上的各种命令行工具(如`curl`),便于进行网络请求、文件操作等。这种方式能够充分利用现有工具的功能,而无需重新发明轮子。

5. 易于修改和维护

由于其直观的结构和简洁的语法,Bash脚本通常比较容易阅读和理解,这对后续的维护和更新很有帮助。如果需要添加新的URL进行检测或者改变检测逻辑,只需简单编辑脚本即可。

6. 成本低

不需要购买昂贵的软件或服务来监控网站的在线状态。利用现有的操作系统功能和开源工具,几乎零成本地完成这项工作。

一句话,使用Bash脚本进行URL可达性检查是一种高效、低成本且灵活的方法,特别适合于这种需要快速部署和简单监控需求的场景。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值