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

如何修改Linux的ping-reboot脚本:丢包超50%时才重启

修改Ping脚本实现丢包率超50%时重启

完全可以通过grep结合正则表达式提取丢包率,再做阈值判断来实现需求。以下是修改后的脚本:

# 执行20次ping并捕获输出,屏蔽错误信息
ping_result=$(ping -c20 "host" 2>/dev/null)

# 从输出中提取丢包率数值,提取失败时默认设为100(比如主机解析失败)
packet_loss=$(echo "$ping_result" | grep -oP '\d+(?=% packet loss)' || echo 100)

# 判断丢包率是否超过50%
if [ "$packet_loss" -gt 50 ]; then
    echo "当前丢包率${packet_loss}%,超过阈值,执行重启操作"
    reboot
else
    echo "网络状态正常,丢包率${packet_loss}%"
fi

关键步骤说明:

  • ping -c20 "host" 2>/dev/null:执行20次ping测试,同时将错误输出(如主机不存在的报错)定向到/dev/null,避免干扰丢包率提取。
  • grep -oP '\d+(?=% packet loss)':使用Perl兼容正则表达式,精准匹配并提取丢包率的数字部分(比如从20 packets transmitted, 8 received, 60% packet loss中提取60)。
  • 额外处理:如果ping命令执行失败(比如无法解析目标主机),默认丢包率设为100%,确保极端场景下也能触发重启逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:20:37