当前位置: 首页 > news >正文

定时拨测指定url连通性

定时检测服务器到外网域名的连通性,这里脚本分享给大家,需要的自取

#!/bin/bash

# 定义要测试的 URL 列表
urls=("https://www.baidu.com" "https://www.google.com")

# 获取当前时间
current_time=$(date "+%Y-%m-%d %H:%M:%S")

# 定义日志文件夹路径
log_dir="/data/boce/logs"
# 如果日志文件夹不存在,则创建该文件夹
mkdir -p "$log_dir"

# 定义日志文件路径
log_file="$log_dir/url_check_$(date '+%Y-%m-%d').log"

# 循环测试每个 URL
for url in "${urls[@]}"; do
  # 使用 curl 测试 URL 并获取详细错误信息,同时获取 HTTP 状态码
  response=$(curl -s --head --request GET "$url" --connect-timeout 10 --max-time 15)
  http_code=$(echo "$response" | head -n 1 | awk '{print $2}')
  
  # 检查 curl 执行是否成功
  if [ $? -eq 0 ]; then
    # 如果连接成功,记录日志,包括状态码
    if [[ "$http_code" =~ ^2[0-9]{2}$ || "$http_code" =~ ^3[0-9]{2}$ ]]; then
      echo "$current_time - $url is reachable. HTTP Status: $http_code" >> "$log_file"
    else
      echo "$current_time - $url is unreachable. HTTP Status: $http_code" >> "$log_file"
    fi
  else
    # 如果 curl 执行失败,捕获并记录错误信息
    error_message=$(curl -s --head --request GET "$url" --connect-timeout 10 --max-time 15 2>&1)
    
    # 判断错误信息并记录具体的错误原因
    if [[ "$error_message" == *"Connection timed out"* ]]; then
      echo "$current_time - $url is unreachable. Error: Timeout" >> "$log_file"
    elif [[ "$error_message" == *"Could not resolve host"* ]]; then
      echo "$current_time - $url is unreachable. Error: Could not resolve host" >> "$log_file"
    elif [[ "$error_message" == *"Failed to connect to"* ]]; then
      echo "$current_time - $url is unreachable. Error: Failed to connect" >> "$log_file"
    elif [[ "$error_message" == *"Connection refused"* ]]; then
      echo "$current_time - $url is unreachable. Error: Connection refused" >> "$log_file"
    elif [[ "$error_message" == *"SSL certificate problem"* ]]; then
      echo "$current_time - $url is unreachable. Error: SSL certificate problem" >> "$log_file"
    else
      echo "$current_time - $url is unreachable. Error: $error_message" >> "$log_file"
    fi
  fi
done

chmod +x /data/boce/boce.sh
crontab -e
* * * * * /data/boce/boce.sh

执行效果日志
在这里插入图片描述

相关文章:

  • 小米红米手机澎湃2.0解锁BL 绕澎湃社区验证 救砖以及9008授权
  • mysql之联合索引
  • 微信小程序登陆鉴权最佳实现
  • 【哇! C++】缺省参数、函数重载与引用
  • 【C++】策略模式
  • 迭代、递归、回溯和动态规划
  • span标签 鼠标移入提示框 el-tooltip element-ui
  • twisted实现MMORPG 游戏数据库操作封装设计与实现
  • python学opencv|读取图像(六十八)使用cv2.Canny()函数实现图像边缘检测
  • Linux内核 - 非仿生机器人之感知主控系统(协议栈)
  • 3D打印学习
  • 【DDD系列-2】风暴出的领域模型
  • 解决 MyBatis Plus 在 PostgreSQL 中 BigDecimal 精度丢失的问题
  • Android remount failed: Permission denied 失败解决方法
  • 基于单片机的智能安全插座(论文+源码)
  • DeepSeek计算机视觉(Computer Vision)基础与实践
  • Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档
  • js考核第三题
  • 嵌入式经常用到串口,如何判断串口数据接收完成?
  • IIC总线,也称为I²C或Inter-Integrated Circuit协议
  • 英伟达回应在上海设立新办公空间:正租用一个新办公空间,这是在中国持续深耕的努力
  • CBA官方对孙铭徽罚款3万、广厦投资人楼明停赛2场罚款5万
  • 天问二号探测器顺利转入发射区
  • 上海这场有温度的“人才集市”,为更多人才搭建“暖心桥”
  • 新华每日电讯:博物馆正以可亲可近替代“高冷范儿”
  • 芬兰西南部两架直升机相撞坠毁,第一批救援队已抵达现场