------------------ END ------------------
关注公众号,获取更多精彩内容
在日常的运维工作中,难免会有一些临时监控或测试的小需求,如了解网络的稳定性、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 1 done 使用说明:
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 1 done 使用说明:
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 1 done 使用说明:
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删除。 |
GMT+8, 2025-3-10 15:19 , Processed in 0.841596 second(s), 21 queries .