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