#!/bin/bash

定义需要检查的网站

websites=('www.google.com' 'www.facebook.com' 'www.twitter.com')

定义重试次数

max_retry=5

定义连续失败次数达到多少次后重新启动服务器

max_failures=3

定义日志文件

log_file="/var/log/tcping.log"

定义函数,用于使用 tcping 测试网站是否可用

function test_website() { echo "$(date) - 正在测试网站: $1" for ((i=1; i<=${max_retry}; i++)); do tcping_result=$(hping3 -S $1 -c 1 -p 443 > /dev/null 2>&1) if [ $? -eq 0 ]; then echo "$(date) - 网站 $1 可用" return 0 else echo "$(date) - 网站 $1 不可用 - 第 $i 次重试" fi done return 1 }

定义函数,用于重新启动服务器

function reboot_server() { echo "$(date) - 所有网站都不可用 - 正在重新启动服务器" # 如果需要真正重启服务器,请取消下面一行的注释 # reboot }

主循环

while true; do failure_count=0 for website in "${websites[@]}"; do if test_website "$website"; then failure_count=0 else ((failure_count++)) if [ $failure_count -ge $max_failures ]; then echo "$(date) - $website 连续 $failure_count 次不可用" break fi fi done if [ $failure_count -ge $max_failures ]; then failure_count=0 for ((i=1; i<=${max_retry}; i++)); do echo "$(date) - 正在尝试重新测试所有网站 - 第 $i 次" all_websites_up=true for website in "${websites[@]}"; do if ! test_website "$website"; then all_websites_up=false break fi done if $all_websites_up; then echo "$(date) - 重试第 $i 次后,所有网站都可用" break fi echo "$(date) - 第 $i 次重试失败" done if ! $all_websites_up; then reboot_server >> $log_file 2>&1 exit 0 fi fi sleep 5 done

Bash 脚本:网站监控,重试次数修改为 5 次

原文地址: https://www.cveoy.top/t/topic/mOrq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录