脚本分类

脚本分为三类:

  1. 初级脚本
  2. 中级脚本
  3. 高级脚本

  4. 初级脚本

    1) IP是否在线
    2) ddos脚本
    3)猜数字游戏

  5. 中级脚本

    • 系统巡检脚本
      - 购物车模块
      - 订单模块
      - 学生管理系统
  6. 高级脚本

    监控系统(包含,数据分析脚本,数据采集脚本,数据存储脚本,数据展示脚本,数据告警脚本)

如何通过初级脚本提升自己:

思路:

  1. IP是否在线
  2. 1. 判断一下目前的服务器IP是否在线
  3. 2. 判断IP在线的个数,不在线的个数
  4. 3. 增加用户体验:加一个进度条
  5. 4. IP如果在线的话,做巡检
  6. 1 硬件层面是否正常(cpu,内存,磁盘)
  7. 2 软件层面是否正常(目前跑了哪些服务,是否正常运行)
  8. 3)安全层面的检查, (命令是否被别人修改,是否有ddos攻击,暴力破解)
  9. 5. 告警
  10. 如果出现问题, 邮件告警+微信告警

15种方法写脚本

脚本就是一门编程语言, 学会shell脚本在学习其他的语言会更容易

用shell教你编程思想

IP是否在线脚本

原题
扫描192.168.3.0/24网络中哪些主机在线,如果在线,,如果不在线,

思路
首先需要循环升目标主机的IP地址, 生成方法就是通过{ }或者seq生成1到255的数字,然后将数字和192.168.31进行字符串组合。
然后用ping命令来判断这个ip是否可以ping的通,在平的时候需要-c1和-w1
最后根据判断结果输出信息

方法一二: 循序渐进实现相应的功能

  1. #!/bin/bash
  2. str="192.168.31."
  3. for num in {1..255}
  4. do
  5. ip=${str}${num}
  6. if ping -c1 -w1 ${ip} &>/dev/null;then
  7. echo "$ip is online."
  8. else
  9. echo "$ip is offline"
  10. fi
  11. done
  12. w: 超时
  13. c ping一次
  14. 方法2
  15. #!/bin/bash
  16. str="192.168.1."
  17. for num in {1..255}
  18. do
  19. ip=${str}${num}
  20. ping -c1 -w1 ${ip} &>/dev/null
  21. num=$?
  22. if [ $num -eq 0 ];then
  23. echo "$ip is online."
  24. else
  25. echo "$ip is offline"
  26. fi
  27. done

需求: 如何实现统计完ip是否在线,直接出结果

方法三: 统计完IP直接出现结果

  1. [root@k8s-master ~]# cat ping1.sh
  2. #!/bin/bash
  3. str=192.168.3.
  4. "
  5. # rm -rf /root/online.txt
  6. # rm -rf /root/offline.txt
  7. echo "" >/root/online.txt
  8. # echo /dev/null >/root/online.txt
  9. echo "" >/root/offline.txt
  10. echo "正在统计请稍后....(时间稍长,请耐心等待)"
  11. for num in {1..25}
  12. do
  13. IP=${str}${num}
  14. ping -c1 -w1 ${IP} &>/dev/null
  15. num=$?
  16. if [ $num -eq 0 ];then
  17. echo $IP >>/root/online.txt
  18. else
  19. echo $ip >>/root/offline.txt
  20. fi
  21. done
  22. online=`cat /root/online.txt |wc -l`
  23. offline=`cat /root/offline.txt|wc -l`
  24. 方法二:
  25. #online=`grep -v ^$ online.txt |wc -l`
  26. #offline=`grep -v ^$ offline.txt |wc -l`
  27. echo "目前在线的IP数量是$online"
  28. echo "目前不在线的IP数量是$offline"

方法四: 实现进度条

  1. 方法四:
  2. [root@k8s-master ~]# cat ping4.sh
  3. #!/bin/bash
  4. STR=192.168.3.
  5. echo "正在查询请稍后....(时间稍长,请耐心等待)"
  6. echo "" >/root/online.txt
  7. echo "" >/root/offline.txt
  8. ##=================
  9. i=0
  10. str='#'
  11. ch=('|' '\' '-' '/')
  12. index=0
  13. while [ $i -le 25 ]
  14. do
  15. printf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]}
  16. str+='#'
  17. let i++
  18. let index=i%4
  19. sleep 0.2
  20. done
  21. printf "\n"
  22. echo "查询完毕"
  23. ##==================
  24. for num in {1..25}
  25. do
  26. #echo $num
  27. IP=${STR}${num}
  28. if ping -c1 -w1 $IP &>/dev/null;then
  29. echo $IP >>/root/online.txt
  30. else
  31. echo $IP >>/root/offline.txt
  32. fi
  33. done
  34. online=`grep -v ^$ online.txt |wc -l`
  35. offline=`grep -v ^$ offline.txt |wc -l`
  36. echo "目前在线的IP数量是$online"
  37. echo "目前在线的IP数量是$offline"

正在查询请稍后….

  1. 设置邮件告警(哪个IP不在线)
  2. 智能化,定期关注不在线的IP, 一旦在线及时通知我们
  3. 在线巡检, 参数是否可用的,cpu,内存
  4. 设置微信告警
  5. 每隔一段时间自动检查

大型脚本当中的一部分

  1. 先去重,再排序
  2. 遍历文本文件,不要插入
  3. 清空之前的,然后在插入

需求5: 不在线的IP发送邮件到邮箱

image.png

image.png

image.png

授权码: FWTWEPHSALOBFNPI

  1. [root@k8s-master ~]# yum -y install mailx
  2. [root@k8s-master ~]# cat /etc/mail.rc |tail -5
  3. set from=xinsz08vip@163.com
  4. set stmp=stmp.163.com
  5. set smtp-auth-user=xinsz08vip@163.com
  6. set smtp-auth-password=FWTWEPHSALOBFNPI
  7. [root@k8s-master ~]#

测试:
[root@k8s-master ~]# echo aaa > a.txt
[root@k8s-master ~]# echo “ceshi” |mail -s “test” -a ./a.txt xinsz08vip@163.com