监控网卡,如果网卡故障,重启网卡

注意点:
1.lost_rate变量赋值的时候,等号附近好像不能有空格。
2.还有if判断的时候,好像里面也是要标准格式,都是一个空格。
3.ping的这个ip应该是内网里其他ip,因为网卡故障的时候也可以ping通本地ip。

#!/bin/bash
date="`date '+%Y-%m-%d %H:%M:%S'`"

lost_rate=`ping -c 8 -w 8 192.168.0.xx | grep 'packet loss' |  awk -F'packet loss' '{ print $1 }'| awk '{ print $NF }' | sed 's/%//g'`

if [ $lost_rate -eq 0 ];then
        echo "network_ok $date">>/home/network_ok.log
elif [ $lost_rate -le 100 ];then
        echo "network_error restart   $date">>/home/network_error.log
        ifdown em7
        ifup em7

fi

改进版:(考虑到打印:未知的名称或服务)

#!/bin/bash
date="`date '+%Y-%m-%d %H:%M:%S'`"

lost_rate=`ping -c 8 -w 8 192.168.0.xx | grep 'packet loss' |  awk -F'packet loss' '{ print $1 }'| awk '{ print $NF }' | sed 's/%//g'`

if [ $lost_rate -eq 0 ];then
	echo "network_ok $date">>/home/network_ok.log
else
	echo "network_error restart   $date">>/home/network_error.log
	ifdown em7
    ifup em7

fi

第三版(最终版):

vim /var/mail/root 看当前用户的crontab输出日志,发现报错,原来是crontab运行的任务的环境变量是PATH=/usr/bin:/bin。
发现运行的命令,不在cron的环境变量,所以shell脚本里用绝对路径就可以了。(又踩坑了qq)

[root@master data]# which ifup
/usr/sbin/ifup
[root@master data]# which ifdown
/usr/sbin/ifdown

From root@master.localdomain Sun Sep 17 01:00:02 2023
Return-Path: root@master.localdomain
X-Original-To: root
Delivered-To: root@master.localdomain
Received: by master.localdomain (Postfix, from userid 0)
id 861DD6C2865; Sun, 17 Sep 2023 01:00:02 +0800 (CST)
From: “(Cron Daemon)” root@master.localdomain
To: root@master.localdomain
Subject: Cron root@master /xxx/restart_network_if_loss.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=536813>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=zh_CN.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: 20230916170002.861DD6C2865@master.localdomain
Date: Sun, 17 Sep 2023 01:00:02 +0800 (CST)
/data/restart_network_if_loss.sh:行10: ifdown: 未找到命令
/data/restart_network_if_loss.sh:行11: ifup: 未找到命令

#!/bin/bash
date="`date '+%Y-%m-%d %H:%M:%S'`"

lost_rate=`ping -c 8 -w 8 192.168.0.xx | grep 'packet loss' |  awk -F'packet loss' '{ print $1 }'| awk '{ print $NF }' | sed 's/%//g'`

if [ $lost_rate -eq 0 ];then
	echo "network_ok $date">>/home/network_ok.log
else
	echo "network_error restart   $date">>/home/network_error.log
	/usr/sbin/ifdown em7
    /usr/sbin/ifup em7

fi

一小时运行一次:

crontab -e
0 * * * * /data/restart_network_if_loss.sh

半小时运行一次:

crontab -e
0 ,30 * * * * /data/restart_network_if_loss.sh

如果需要cron运行任务的输出可以这样,把交互式的输出写入文件里:
0,30 * * * * /data/restart_network_if_loss.sh >> /data/network_output.log

参考文章:
https://www.cnblogs.com/luckyall/p/8094366.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

confined.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值