脚本分类
脚本分为三类:
- 初级脚本
- 中级脚本
高级脚本
初级脚本
1) IP是否在线
2) ddos脚本
3)猜数字游戏中级脚本
- 系统巡检脚本
- 购物车模块
- 订单模块
- 学生管理系统
- 系统巡检脚本
高级脚本
监控系统(包含,数据分析脚本,数据采集脚本,数据存储脚本,数据展示脚本,数据告警脚本)
如何通过初级脚本提升自己:
思路:
IP是否在线1. 判断一下目前的服务器IP是否在线2. 判断IP在线的个数,不在线的个数3. 增加用户体验:加一个进度条4. IP如果在线的话,做巡检1) 硬件层面是否正常(cpu,内存,磁盘)2) 软件层面是否正常(目前跑了哪些服务,是否正常运行)3)安全层面的检查, (命令是否被别人修改,是否有ddos攻击,暴力破解)5. 告警如果出现问题, 邮件告警+微信告警
15种方法写脚本
脚本就是一门编程语言, 学会shell脚本在学习其他的语言会更容易
IP是否在线脚本
原题
扫描192.168.3.0/24网络中哪些主机在线,如果在线,,如果不在线,
思路
首先需要循环升目标主机的IP地址, 生成方法就是通过{ }或者seq生成1到255的数字,然后将数字和192.168.31进行字符串组合。
然后用ping命令来判断这个ip是否可以ping的通,在平的时候需要-c1和-w1
最后根据判断结果输出信息
方法一二: 循序渐进实现相应的功能
#!/bin/bashstr="192.168.31."for num in {1..255}doip=${str}${num}if ping -c1 -w1 ${ip} &>/dev/null;thenecho "$ip is online."elseecho "$ip is offline"fidonew: 超时c ping一次方法2#!/bin/bashstr="192.168.1."for num in {1..255}doip=${str}${num}ping -c1 -w1 ${ip} &>/dev/nullnum=$?if [ $num -eq 0 ];thenecho "$ip is online."elseecho "$ip is offline"fidone
需求: 如何实现统计完ip是否在线,直接出结果
方法三: 统计完IP直接出现结果
[root@k8s-master ~]# cat ping1.sh#!/bin/bashstr=192.168.3."# rm -rf /root/online.txt# rm -rf /root/offline.txtecho "" >/root/online.txt# echo /dev/null >/root/online.txtecho "" >/root/offline.txtecho "正在统计请稍后....(时间稍长,请耐心等待)"for num in {1..25}doIP=${str}${num}ping -c1 -w1 ${IP} &>/dev/nullnum=$?if [ $num -eq 0 ];thenecho $IP >>/root/online.txtelseecho $ip >>/root/offline.txtfidoneonline=`cat /root/online.txt |wc -l`offline=`cat /root/offline.txt|wc -l`方法二:#online=`grep -v ^$ online.txt |wc -l`#offline=`grep -v ^$ offline.txt |wc -l`echo "目前在线的IP数量是$online"echo "目前不在线的IP数量是$offline"
方法四: 实现进度条
方法四:[root@k8s-master ~]# cat ping4.sh#!/bin/bashSTR=192.168.3.echo "正在查询请稍后....(时间稍长,请耐心等待)"echo "" >/root/online.txtecho "" >/root/offline.txt##=================i=0str='#'ch=('|' '\' '-' '/')index=0while [ $i -le 25 ]doprintf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]}str+='#'let i++let index=i%4sleep 0.2doneprintf "\n"echo "查询完毕"##==================for num in {1..25}do#echo $numIP=${STR}${num}if ping -c1 -w1 $IP &>/dev/null;thenecho $IP >>/root/online.txtelseecho $IP >>/root/offline.txtfidoneonline=`grep -v ^$ online.txt |wc -l`offline=`grep -v ^$ offline.txt |wc -l`echo "目前在线的IP数量是$online"echo "目前在线的IP数量是$offline"
正在查询请稍后….
- 设置邮件告警(哪个IP不在线)
- 智能化,定期关注不在线的IP, 一旦在线及时通知我们
- 在线巡检, 参数是否可用的,cpu,内存
- 设置微信告警
- 每隔一段时间自动检查
大型脚本当中的一部分
- 先去重,再排序
- 遍历文本文件,不要插入
- 清空之前的,然后在插入
需求5: 不在线的IP发送邮件到邮箱



授权码: FWTWEPHSALOBFNPI
[root@k8s-master ~]# yum -y install mailx[root@k8s-master ~]# cat /etc/mail.rc |tail -5set from=xinsz08vip@163.comset stmp=stmp.163.comset smtp-auth-user=xinsz08vip@163.comset smtp-auth-password=FWTWEPHSALOBFNPI[root@k8s-master ~]#
测试:
[root@k8s-master ~]# echo aaa > a.txt
[root@k8s-master ~]# echo “ceshi” |mail -s “test” -a ./a.txt xinsz08vip@163.com
