Shell脚本实现网络定期检查,并将网络状态写到日志文件中

  Shell脚本实现网络定期检查,查询到网络失败重启网卡,Shell脚本实现网络定期检查

#!/bin/bash

network_log_file_name=/home/root/network_status.log                # 网络日志文件
network_log_backup_file_name=/home/root/network_status_backup.log  # 网络日志备份文件 
network_log_max_size=(512)  # 限制log文件的大小,单位是字节

nic="eth0"
ip="10.10.51.1"  # ping的IP
poll_intervel=5  # ping的间隔, 单位是秒


while true
do
	sleep $poll_intervel

	# 发送ping命令测试网络状态, 发送5次, 超时时间为1s, 默认发送间隔为1s
	lost_rate=`ping -c 5 -W 1 $ip | grep 'packet loss' \
				| awk -F 'packet loss' '{ print $1 }' \
					| awk '{ print $NF }' | sed 's/%//g'`
 
	# 获取系统时间
	time="`date '+%Y-%m-%d %H:%M:%S'`"

	echo $lost_rate
	if [ $lost_rate -lt 100 ]
	then
		echo "$time, $ip $nic, loss_rate=$lost_rate" >> $network_log_file_name
	else
		echo "$time, $ip $nic, lost_rate=$lost_rate, restart network" >> $network_log_file_name

		ifconfig $nic down # 卸载网卡
		sleep 1
        ifconfig $nic up   # 重新加载网卡
        sleep 5
	fi

	# 获取文件大小,单位是字节
	file_size=`ls -l $network_log_file_name | awk '{print $5}'` # 获取文件大小,单位是字节
	if [ $file_size -gt $network_log_max_size ] # 文件大小超过了限定的大小
	then
		if [ -f $network_log_backup_file_name ] # 如果备份文件存在
		then
			rm $network_log_backup_file_name
		fi
			
		cp $network_log_file_name $network_log_backup_file_name  # 将日志文件备份
        rm $network_log_file_name #删除超过限定大小的日志文件
	fi
done

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值