脚本分类
脚本分为三类:
- 初级脚本
- 中级脚本
高级脚本
初级脚本
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/bash
str="192.168.31."
for num in {1..255}
do
ip=${str}${num}
if ping -c1 -w1 ${ip} &>/dev/null;then
echo "$ip is online."
else
echo "$ip is offline"
fi
done
w: 超时
c ping一次
方法2
#!/bin/bash
str="192.168.1."
for num in {1..255}
do
ip=${str}${num}
ping -c1 -w1 ${ip} &>/dev/null
num=$?
if [ $num -eq 0 ];then
echo "$ip is online."
else
echo "$ip is offline"
fi
done
需求: 如何实现统计完ip是否在线,直接出结果
方法三: 统计完IP直接出现结果
[root@k8s-master ~]# cat ping1.sh
#!/bin/bash
str=192.168.3.
"
# rm -rf /root/online.txt
# rm -rf /root/offline.txt
echo "" >/root/online.txt
# echo /dev/null >/root/online.txt
echo "" >/root/offline.txt
echo "正在统计请稍后....(时间稍长,请耐心等待)"
for num in {1..25}
do
IP=${str}${num}
ping -c1 -w1 ${IP} &>/dev/null
num=$?
if [ $num -eq 0 ];then
echo $IP >>/root/online.txt
else
echo $ip >>/root/offline.txt
fi
done
online=`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/bash
STR=192.168.3.
echo "正在查询请稍后....(时间稍长,请耐心等待)"
echo "" >/root/online.txt
echo "" >/root/offline.txt
##=================
i=0
str='#'
ch=('|' '\' '-' '/')
index=0
while [ $i -le 25 ]
do
printf "[%-25s][%d%%][%c]\r" $str $(($i*4)) ${ch[$index]}
str+='#'
let i++
let index=i%4
sleep 0.2
done
printf "\n"
echo "查询完毕"
##==================
for num in {1..25}
do
#echo $num
IP=${STR}${num}
if ping -c1 -w1 $IP &>/dev/null;then
echo $IP >>/root/online.txt
else
echo $IP >>/root/offline.txt
fi
done
online=`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 -5
set from=xinsz08vip@163.com
set stmp=stmp.163.com
set smtp-auth-user=xinsz08vip@163.com
set 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