Shell+Curl网站状态检查脚本 抓出无法访问的站点

当我们做网站维护工作时,需要经常对网站进行状态监控,定期检测网站是否能正常访问、响应时间等。本篇攻略将介绍如何使用Shell和Curl命令来编写网站状态检查脚本,抓出无法访问的站点。

1. 脚本原理

该脚本通过使用Curl命令对指定站点进行请求,并返回http状态码进行判断,以此来检测网站是否能正常访问。如果请求失败或返回5xx状态码(服务器错误),则视为网站无法访问。

2. 编写脚本

我们可以使用以下代码来编写Shell+Curl网站状态检查脚本:

#!/bin/bash
# set the list of URLs to check
url_list=("https://www.example.com" "https://www.google.com")

# loop through the list and check the status code for each URL
 for url in ${url_list[@]}; do
   status_code=`curl -I -s $url -w "%{http_code}" -o /dev/null`
   if [[ "$status_code" =~ ^5 ]]; then
     echo "$url is down (HTTP status code $status_code)"
   elif [[ "$status_code" == "000" ]]; then
     echo "$url is down (Connection refused)"
   else
     echo "$url is up and running (HTTP status code $status_code)"
   fi
 done

上述代码中,我们首先定义了一个url_list数组,其中存放了需要检测的网站地址。然后使用for循环遍历每个网站地址,并在循环内部执行curl命令进行状态码的检查。其中参数-I表示只返回头部信息,-s表示silent(静默)模式,不输出请求信息和进度条,-w参数用来自定义输出格式,这里指定输出http状态码,-o参数用于不保存下载的文件到本地,而将其输出到/dev/null(垃圾桶)中,以此来提高效率,避免磁盘空间的占用。

当状态码为5xx时(服务端错误),我们将其视为无法访问的站点,并输出到控制台。如果状态码为000,表示访问时出现连接拒绝的错误,同样被视为网站无法访问。最后,对于其他状态码,我们将其视为网站正常运作,并输出到控制台。

3. 案例演示

我们来通过两个实例演示该脚本的使用。

3.1 演示1:检查单个网站

我们先尝试使用该脚本来检查单个网站。

如下所示,我们将要检查的网站地址放入url_list数组中,然后在终端执行该脚本:

#!/bin/bash
url_list=("https://www.example.com")
for url in ${url_list[@]}; do
    status_code=`curl -I -s $url -w "%{http_code}" -o /dev/null`
    if [[ "$status_code" =~ ^5 ]]; then
        echo "$url is down (HTTP status code $status_code)"
    elif [[ "$status_code" == "000" ]]; then
        echo "$url is down (Connection refused)"
    else
        echo "$url is up and running (HTTP status code $status_code)"
    fi
done

执行该脚本后,我们可以看到输出结果如下:

https://www.example.com is up and running (HTTP status code 200)

因为该网站可以正常访问,所以输出结果为网站处于可运行状态。

3.2 演示2:检查多个网站

我们尝试使用该脚本来检查多个网站的运行状态。

如下所示,我们在url_list数组中填写了两个需要检查的网站地址,分别是https://www.example.com和https://www.google.com。然后在终端中执行该脚本:

#!/bin/bash
url_list=("https://www.example.com" "https://www.google.com")
for url in ${url_list[@]}; do
    status_code=`curl -I -s $url -w "%{http_code}" -o /dev/null`
    if [[ "$status_code" =~ ^5 ]]; then
        echo "$url is down (HTTP status code $status_code)"
    elif [[ "$status_code" == "000" ]]; then
        echo "$url is down (Connection refused)"
    else
        echo "$url is up and running (HTTP status code $status_code)"
    fi
done

执行该脚本后,我们可以看到输出结果如下:

https://www.example.com is up and running (HTTP status code 200)
https://www.google.com is up and running (HTTP status code 200)

在这个例子中,我们检测了两个网站地址,结果显示它们都正常运行。

4. 总结

通过本篇攻略的介绍,我们学习了如何使用Shell和Curl命令来编写网站状态检查脚本,并演示了如何在终端上使用该脚本来检测单个或多个网站的运行状态。了解和掌握该脚本的使用方法,可以方便我们进行网站监控和状态管理,及时排查和修复网站的故障和问题,提高网站的稳定性和可用性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Shell+Curl网站状态检查脚本 抓出无法访问的站点 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • MySQL如何快速导入数据

    MySQL是一种常用的关系型数据库管理系统,对于需要导入大量数据的情况,如何高效地完成数据导入就显得尤为重要。以下是MySQL如何快速导入数据的完整攻略。 1. 准备工作 在开始导入数据之前,需要先进行一些准备工作,包括: 确保已经创建好了要导入数据的表,表结构要与数据文件中的字段类型、数量等相同。 (可选)将要导入的数据文件转换为MySQL支持的格式,如C…

    PHP 2023年5月27日
    00
  • php的declare命令及用法详解

    下面就为您详细讲解一下PHP的declare命令及用法。 什么是declare命令? 针对PHP5.3以上版本,PHP引入了declare语句,通常称为declare命令。它可以让我们在PHP中开启和关闭一些指定的扩展。 声明语法 declare (directive) 其中directive可以理解为是php.ini配置文件中的一些指令,它可以是下列四个之…

    PHP 2023年5月25日
    00
  • php实现singleton()单例模式实例

    下面是详细讲解“PHP实现Singleton()单例模式实例”的完整攻略: 什么是单例模式? 单例模式是一种设计模式,通过保证类只存在一个实例对象来确保该对象的全局访问性和共享。 实现Singleton()的步骤 1. 声明一个私有的、静态的变量$instance 这个变量用于存储唯一的实例对象。由于它是静态的,所以它可以被整个类所访问。 class Sin…

    PHP 2023年5月23日
    00
  • PHP多维数组排序array详解

    PHP多维数组排序array详解 在PHP中,数组可以看作是一个集合,而集合是由等级相同的元素组成的,因此数组就有了多维度的概念。在实际开发中,我们经常需要按照指定的规则对多维数组进行排序,这个时候,我们就需要使用PHP的排序函数来实现。 数组排序方法 在PHP中,常用的数组排序方法主要有以下几种: sort():将数组按照升序排列。 rsort():将数组…

    PHP 2023年5月26日
    00
  • PHP 用数组降低程序的时间复杂度

    下面是PHP用数组降低程序时间复杂度的完整攻略: 1. 什么是时间复杂度? 时间复杂度是算法执行所需的时间,通常用 “O(n)” 表示,其中 n 是程序输入的规模或者说大小。时间复杂度可以用来衡量算法的效率,通常我们会尽可能降低时间复杂度。 2. 数组降低时间复杂度的原理 数组是一种数据结构,用于存储固定大小的元素序列。在编程过程中,使用数组可以降低时间复杂…

    PHP 2023年5月26日
    00
  • php array_keys 返回数组的键名

    当我们需要获取PHP数组中所有的键名时,可以使用PHP内置函数array_keys(),该函数返回一个由数组中所有的键名所组成的新数组。 函数语法为: array array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] ) 其中,$array参数表示…

    PHP 2023年5月26日
    00
  • PHP获取访问设备信息的方法示例

    获取访问设备信息是网站开发中比较常见的需求,能够帮助开发者做出更适合不同设备的页面设计。在PHP中,获取访问设备信息的方法有很多,以下为详细攻略: 1. 使用$_SERVER预定义变量 PHP中的一个预定义变量$_SERVER包含了访问设备的一些信息,如浏览器类型、操作系统、远程IP地址等。获取设备信息时,只需访问这些$_SERVER变量即可。以下为示例代码…

    PHP 2023年5月26日
    00
  • 究竟什么是Node.js?Node.js有什么好处?

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,具备事件驱动、非阻塞I/O等特性,可以用于构建高效的网络应用程序和服务端应用。 Node.js有以下好处: 异步I/O:Node.js采用了异步I/O的方式,能够处理大量的并发连接,而不必像传统的服务器一样,为每个连接开一个线程,这大大降低了服务器的内存开销。 高效性能:由于Nod…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部