1、查看网卡实时流量
# vi check_network.sh
"#!/bin/bash
NIC=$1
echo -e "" In ------ Out""
while true; do
OLD_IN=$(awk '$0~""'$NIC'""{print $2}' /proc/net/dev)
OLD_OUT=$(awk '$0~""'$NIC'""{print $10}' /proc/net/dev)
sleep 1
NEW_IN=$(awk '$0~""'$NIC'""{print $2}' /proc/net/dev)
NEW_OUT=$(awk '$0~""'$NIC'""{print $10}' /proc/net/dev)
IN=$(printf ""%.1f%s"" ""$((($NEW_IN-$OLD_IN)/1024))"" ""KB/s"")
OUT=$(printf ""%.1f%s"" ""$((($NEW_OUT-$OLD_OUT)/1024))"" ""KB/s"")
echo ""$IN $OUT""
sleep 1
done"
执行:sh check.sh ens33
2、批量查询网站是否可以访问
# vi check_web.sh
"#!/bin/bash
URL_LIST=""www.baidu.com www.sina.cn""
for URL in $URL_LIST; do
FAIL_COUNT=0
for ((i=1;i<=3;i++)); do
HTTP_CODE=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $URL)
if [ $HTTP_CODE -eq 200 ]; then
echo ""$URL OK""
break
else
echo ""$URL retry $FAIL_COUNT""
let FAIL_COUNT++
fi
done
if [ $FAIL_COUNT -eq 3 ]; then
echo ""Warning: $URL Access failure!""
fi
done"
3、检查 MySQL 主从同步状态
# vi check_mysql.sh
"#!/bin/bash
USER=bak
PASSWD=123456
IO_SQL_STATUS=$(mysql -u$USER -p$PASSWD -e 'show slave statusG' |awk -F:
'/Slave_.*_Running/{gsub("": "","":"");print $0}') #gsub 去除冒号后面的空格
for i in $IO_SQL_STATUS; do
THREAD_STATUS_NAME=${i%:*}
THREAD_STATUS=${i#*:}
if [ ""$THREAD_STATUS"" != ""Yes"" ]; then
echo ""Error: MySQL Master-Slave $THREAD_STATUS_NAME status is
$THREAD_STATUS!""
fi
done"
4、DDOS攻击nginx防范
"#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/etc/nginx/logs/access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}')
for IP in $ABNORMALIP; do
if [ $(iptables -vnL |grep -c ""$IP"") -eq 0 ]; then
iptables -I INPUT -s $IP -j DROP
echo ""$(date +'%F%T') $IP"" >> /tmp/drop_ip.log
fi
done"