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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5436477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存