网站英文版建设惠州网络推广工作室
定时检测服务器到外网域名的连通性,这里脚本分享给大家,需要的自取
#!/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}$ ]]; thenecho "$current_time - $url is reachable. HTTP Status: $http_code" >> "$log_file"elseecho "$current_time - $url is unreachable. HTTP Status: $http_code" >> "$log_file"fielse# 如果 curl 执行失败,捕获并记录错误信息error_message=$(curl -s --head --request GET "$url" --connect-timeout 10 --max-time 15 2>&1)# 判断错误信息并记录具体的错误原因if [[ "$error_message" == *"Connection timed out"* ]]; thenecho "$current_time - $url is unreachable. Error: Timeout" >> "$log_file"elif [[ "$error_message" == *"Could not resolve host"* ]]; thenecho "$current_time - $url is unreachable. Error: Could not resolve host" >> "$log_file"elif [[ "$error_message" == *"Failed to connect to"* ]]; thenecho "$current_time - $url is unreachable. Error: Failed to connect" >> "$log_file"elif [[ "$error_message" == *"Connection refused"* ]]; thenecho "$current_time - $url is unreachable. Error: Connection refused" >> "$log_file"elif [[ "$error_message" == *"SSL certificate problem"* ]]; thenecho "$current_time - $url is unreachable. Error: SSL certificate problem" >> "$log_file"elseecho "$current_time - $url is unreachable. Error: $error_message" >> "$log_file"fifi
done
chmod +x /data/boce/boce.sh
crontab -e
* * * * * /data/boce/boce.sh
执行效果日志