You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修正Ping状态变更记录Bash脚本:仅上报状态变化

修正后的Cisco设备Ping状态监控脚本

原脚本的核心问题是没持续跟踪设备的上一次状态,还重复执行Ping操作,导致状态没变化时仍持续输出相同信息。以下是修复后的方案:

核心修复逻辑

  • 用变量last_status记录上一次的设备状态,初始值设为unknown(和正常状态区分开)
  • 每次循环只执行1次Ping,避免冗余操作和状态判断不一致
  • 只有当前状态和上一次状态不同时,才输出带纽约时区的时间戳并更新状态记录

修复后的脚本

#!/bin/bash

# 检查是否传入目标IP
if [ $# -ne 1 ]; then
    echo "用法: $0 <目标IP>"
    exit 1
fi

TARGET=$1
# 初始化上一次状态为未知
last_status="unknown"

while true; do
    # 执行一次Ping,判断可达性
    if ping -c 1 "$TARGET" &> /dev/null; then
        current_status="up"
    else
        current_status="down"
    fi

    # 仅当状态变化时输出日志
    if [ "$current_status" != "$last_status" ]; then
        echo "Target is $current_status at: $(TZ='America/New_York' date)"
        last_status="$current_status"
    fi

    sleep 5
done

关键说明

  • 增加了参数检查,确保运行脚本时传入目标IP(比如测试时用./script.sh 10.1.1.51)
  • 每次循环只执行一次Ping,减少网络开销和状态冲突
  • 通过对比current_status和last_status,仅在状态切换时记录日志,避免重复上报

内容的提问来源于stack exchange,提问作者bluedepth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:20:23