脚本内容:vi check_network.sh
#!/bin/bash
date="`date '+%Y-%m-%d %H:%M:%S'`"
ip="173.208.x.x"
nic="eth0"
lost_rate=`ping -c 8 -w 8 $ip | 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 $ip $nic" >>/root/network_ok.log
elif [ $lost_rate -le 100 ]
then
#echo "network_error $date $ip $nic" //输出到窗口,因为不需要所以屏蔽了
#else
echo "network_error $date $ip $nic" >>/root/network_error.log
service network restart
fi
chmod +x check_network.sh
然后在计划任务里添加
*/3 * * * * /bin/sh /opt/check_network.sh
重启crond任务后,然后再创建
network_ok.log
network_error.log
这两个文件来查看网卡正常和有问题是什么时候了.
#!/bin/bash
ADDR1="192.168.1.101";
ADDR2="192.168.1.5";
ACCS1=$(ping -c 1 -s 1 -w 1 $ADDR1 | grep time | awk -F ',' '{print $2}' | awk '{print $1}');
ACCS2=$(ping -c 1 -s 1 -w 1 $ADDR2 | grep time | awk -F ',' '{print $2}' | awk '{print $1}');
if [[ $ACCS1 == 0* ]];
then
if [[ $ACCS2 == 0* ]];
echo "Host $ADDR2 is unavailable" >> $HOME/blackout_time.log
then
systemctl restart network
echo "Netwotk restart time by script1 - $(date +%Y-%m-%d_%k:%M:%S)" >> $HOME/blackout_time.log
sleep 20
fi
fi
ping6 -c 1 -s 1 -w 1 ipv6.google.com | grep time | awk -F ‘,’ ‘{print $2}’ | awk ‘{print $1}’
ping6 -c 8 -w 8 ipv6.google.com | grep ‘packet loss’ | awk -F’packet loss’ ‘{ print $1 }’ | awk ‘{ print $NF }’ | sed ‘s/%//g’
#!/bin/bash
date="`date '+%Y-%m-%d %H:%M:%S'`"
ip="ipv6.google.com"
nic="eth1"
show=$(ping6 -c 8 -w 8 ipv6.google.com | grep 'packet loss' | awk -F'packet loss' '{ print $1 }' | awk '{ print $NF }' | sed 's/%//g')
if [[ $show == 0* ]];
then
updateip=`/usr/local/bin/ddns.sh`
echo "network_ok $date $ip $nic" >>/root/network_ok.log
elif [[ $show == *":"* ]];
then
echo "OK" >>/root/ok.log
elif [[ $show == 1* ]];
then
#echo "network_error $date $ip $nic"
#else
echo "network_error $date $ip $nic" >>/root/network_error.log
service network restart
fi