先ping 百度,如果直接unknown host,这时候应该dns都没有或者路由没有 然后测试获取ping的丢包率,如果丢包大于0%的时候,说明网络环境有点儿问题 这时候tcpdump抓包分析,并同时ping百度看看
https://download.csdn.net/download/yudelian/89478009
#!/bin/sh
rm ./ping.log
LOSS_RATE=0
TCPDUMP_TIMES=0
while true
do
echo "*****************************************************************" >> ./ping.log
echo "*****************************************************************" >> ./ping.log
echo "" >> ./ping.log
date >> ./ping.log
ping -c 5 baidu.com &>> ./ping.log
if cat ./ping.log| tail -n 1 | grep -q "unknown host";then
echo "unknown host, continue" >> ./ping.log
continue
fi
#LOSS_RATE=`cat ./ping.log | tail -n 2 | grep "packets trans" | awk -F ',' '{print $3}' | awk '{print $1}'`
LOSS_RATE=`cat ./ping.log | tail -n 2 | grep "packets trans"`
echo "LOSS_RATE=$LOSS_RATE" >> ./ping.log
if echo "$LOSS_RATE" | grep -wq "0% packet loss";then
echo "LOSS_RATE is small" >> ./ping.log
else
let TCPDUMP_TIMES=$((TCPDUMP_TIMES+1))
echo "LOSS_RATE is too large, $TCPDUMP_TIMES " >> ./ping.log
if [ TCPDUMP_TIMES -gt 15 ];then
rm *.pcap
TCPDUMP_TIMES=0
fi
curr_time=`date "+%H:%M:%S"`
curr_tcpdump_file="$curr_time-cap.pcap"
timeout 30 tcpdump -i eth0.6 -w $curr_tcpdump_file &
echo "" >> ./ping.log
ping -c 3 baidu.com >> ./ping.log
echo "" >> ./ping.log
ping -c 5 172.20.6.34 >> ./ping.log
top -b -n 1 | sed -n '3p;8,11p' >> ./ping.log
fi
sleep 10
done