English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
智能设备 首页 智能频道 软件技术 查看内容

三个简单实用的Shell监控脚本

2025-2-21 14:56| 发布者: xogyNhg3YH| 查看: 74621| 评论: 0

在日常的运维工作中,难免会有一些临时监控或测试的小需求,如了解网络的稳定性、HTTP站点的响应等。此时,通过Shell脚本的方式来实现,可以即简单又高效。本文将分享三个简单实用的Shell监控脚本,分别用于DNS、网络和HTTP的监控场景。一. DNS监控脚本该脚本会每秒对指定域名进行一次 DNS 解析测试,如果解析失败,则将失败信息记录到日志文件中,适合用于监控域名的 DNS 解析稳定性。
    #!/bin/bash# 定义要测试的域名domain="example.com"# 定义日志文件路径log_file="dns_resolution.log"while true; do    # 使用 dig 命令进行 DNS 解析,+short 选项表示只输出解析结果    result=$(dig +short $domain)    if [ -z "$result" ]; then        # 如果结果为空,说明解析出错        echo "$(date): DNS resolution failed for $domain" >> $log_file    fi    # 等待 1 秒    sleep 1done
    使用说明:
    1. 将代码保存为 .sh 文件,例如 test_dns.sh
    2. 给文件添加执行权限:chmod +x test_dns.sh
    3. 运行脚本:./test_dns.sh
    请确保你的系统已经安装了 dig 工具,可以使用包管理器安装,例如在 Ubuntu 上使用 sudo apt-get install dnsutils。如果需要测试不同的域名,修改 domain 变量的值。要停止脚本,可使用 Ctrl+C 组合键。二. Ping监控脚本该脚本会每秒对指定的 IP 地址进行一次 ping 测试,并将每次测试的结果(成功或失败)记录到日志文件中,适用于持续监控某个 IP 地址的网络连通性。
      #!/bin/bash# 定义要 ping 的 IP 地址ip="10.12.15.180"# 定义日志文件的路径log_file="ping_log.log"while true; do    # 使用 ping 命令发送一个 ICMP 包,-c 1 表示只发送一个包,-W 1 表示等待 1 秒超时    ping_result=$(ping -c 1 -W 1 $ip)    # 检查 ping 命令的返回状态码    if [ $? -eq 0 ]; then        # 如果返回状态码为 0,说明 ping 成功        echo "$(date): Ping to $ip succeeded. Result: $ping_result" >> $log_file    else        # 如果返回状态码不为 0,说明 ping 失败        echo "$(date): Ping to $ip failed." >> $log_file    fi    # 等待 1 秒    sleep 1done
      使用说明:
      1. 将上述代码保存为一个 .sh 文件,例如 ping_test.sh
      2. 给脚本添加可执行权限:chmod +x ping_test.sh
      3. 运行脚本:./ping_test.sh
      注意:由于脚本使用了无限循环,若要长期运行该脚本,请考虑将其放在后台运行,可以使用 nohup./ping_test.sh & 命令,这样即使关闭终端,脚本也会继续运行,其输出将被存储在 nohup.out 文件中。你可以通过查看 ping_log.log 文件来了解 ping 的结果。三. HTTP 监控脚本该脚本会每秒对指定的 HTTP 网址进行一次请求测试,并根据响应的状态码判断请求是否成功,将每次测试的结果记录到日志文件中,适用于持续监控某个 HTTP 网站的可用性。
        #!/bin/bash
        # 定义要测试的 HTTP 网址url="http://example.com"# 定义日志文件的路径log_file="http_test.log"
        while true; do    # 使用 curl 命令发送 HTTP 请求,并将结果存储在变量中    http_result=$(curl -s -o /dev/null -w "%{http_code}" $url)    if [ $http_result -eq 200 ]; then        # 如果 HTTP 状态码为 200,说明请求成功        echo "$(date): HTTP request to $url succeeded with status code $http_result" >> $log_file    else        # 否则,请求失败        echo "$(date): HTTP request to $url failed with status code $http_result" >> $log_file    fi    # 等待 1 秒    sleep 1done
        使用说明:
        1. 将上述代码保存为一个 .sh 文件,例如 http_test.sh
        2. 给脚本添加可执行权限:chmod +x http_test.sh
        3. 运行脚本:./http_test.sh
        请确保你的系统中已经安装了 curl 工具,可以使用系统的包管理器进行安装,例如在 Ubuntu 上使用 sudo apt-get install curl。如果需要测试不同的网址,修改 url 变量的值。同时,此脚本使用的curl命令是一个强大的工具,可根据需要添加更多的 curl 选项,例如添加请求头、使用不同的请求方法(如 POST、PUT 等),可修改 curl 命令的参数实现。
        PS:我新出了一个Shell教程,内容包含12 篇精心打磨的教程,篇篇干货。如果你想深入掌握Shell 脚本的使用,欢迎订阅。


        ------------------ END ------------------

        关注公众号,获取更多精彩内容




        此文章来自网络,原文地址:https://mp.weixin.qq.com/s/YUeDq1b3XmcByJGyHWR_BQ
        如有涉及侵权请通过邮箱联系:fnhjeqj@163.com删除。

        鲜花

        握手

        雷人

        路过

        鸡蛋

        最新评论

        QQ|智能设备 | 粤ICP备2024353841号-1

        GMT+8, 2025-3-10 15:19 , Processed in 0.841596 second(s), 21 queries .

        Powered by 智能设备

        ©2025

        |网站地图