一个服务器被DDOS自动关机的脚本

原理:每n分钟检测系统负载,若连续两次负载超阈值,写日志后关机

Shell脚本:
保存为load.sh。脚本执行后会生成load.txt,记录上一周期检测到的系统负载值。被D关机前会生成load.log,记录当前负载及关机时间

  1. #Shutdown at high load
  2. #!/bin/bash
  3.  
  4. #负载阈值。当系统负载一定时间内超过该值两次时,执行相应操作
  5. maxload=10
  6.  
  7. if [[ ! -e “load.txt” ]]; then
  8.         echo “0” > load.txt
  9. fi
  10. load_prev=$(cat load.txt)
  11. load_now=$(cat /proc/loadavg | awk -F’ ‘ ‘{print $1}’ | awk -F’.’ ‘{print $1}’)
  12. echo “${load_now}” > load.txt
  13. if [[ ${load_prev} -ge ${maxload} ]] && [[ ${load_now} -ge ${maxload} ]]; then
  14.         echo “0” > load.txt
  15.         echo “Current average load: $(cat /proc/loadavg | awk -F’ ‘ ‘{print $1}’). Server shutdown at: $(date “+%Y-%m-%d %H:%M:%S”)” >> load.log
  16.         poweroff
  17. fi
  18.  

其中16行的关机命令可换成其它操作,如开启5秒盾、关闭网络、Server酱推送信息等

设置定时任务:
输入crontab -e进入定时任务编辑器,添加:(根据实际情况调整,如检测周期、脚本文件存放路径等)

  1. */5 * * * * /bin/bash /root/load.sh

例子:代码存放在/root/load.sh,每5分钟检测一次

PS.代码很简单,没啥技术力。实用为主,大佬轻喷~

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片