输入数字执行命令
输入1执行 date命令
输入2执行 ls命令

可以使用case判断

#!/bin/bash
echo "cmd manu 1 date 2 ls 3 pwd"
read -p"please input a number;" n
if [ -z $n ]
then
echo "shuruyigeshuzi"
exit
fi
n1=echo $n|sed 's/[0-9]//g'
if
[ -n $n1 ]
then
echo "shuruyigechushuzi"
exit
fi

case $n in
1)
date
;;
2)
ls
;;
3)
pwd
;;
*)
echo "range 1-4"
;;
esac

添加user_00-user_09,并设置随机密码,密码要求10位,并包含数字及大小写字母,注意要把每一个用户密码记录到一个日志文件中。

mkpasswd
在脚本中设置随机密码 可以使用echo|passwd 命令
seq实现数字递增
mkpasswd生成随机字符

#!/bin/bash
for i in seq -w 00 09
do
useradd user$i
p=mkpasswd -l 10 -s 0
echo user
$i $p >> /tmp/pass.tmp
echo $p|passwd --stdin user$i
done
#for i in seq -w 00 09;do userdel -r user
$i;done

服务器上,写一个监控脚本,要求如下:

每隔10s去检测一次服务器上的httpd进程数,如果大于等于500的时候,就需要自动重启一下apache服务,并检测启动是否成功。

若没有正常启动还需再一次启动,最大不成功数超过5次则需要立即发邮件通知管理员,并且以后不需要再检测!

如果启动成功后,1分钟后再次检测httpd进程数,若正常则重复之前操作(每隔10s检测一次),若还是大于等于500,那放弃重启并需要发邮件给管理员,然后自动退出该脚本。假设其中发邮件脚本为之前使用的mail.py

核心要点
pgrep -l httpd或者ps -C httpd --no-heading检查进程
for循环5次计数器

#!/bin/bash

jianchafuwu()
{
c=0
for i in seq 1 5
do
/usr/local/apache2.4/apachectl -l restart 2 > /tmp/httpd.err
if [ ! $? -eq 0 ]
then
c=$[$c+1]
else
break
fi
done
if [ $c -eq 5 ]
then
python mail.py 123@qq.com "httpd进程数大于500重启失败" "head -1 /tmp/httpd.err"
exit
fi
}

while :
do
n=ps -C httpd --no -heading|wc -l
if [ $n -ge 500 ]
then
jianchafuwu
sleep 60
n1=ps -C httpd --no -heading|wc -l
if [ $n1 -ge 500 ]
then python mail.py 123@qq.com "apache重启1分钟后进程数大于500" "请排查问题"
exit
fi
fi
sleep 10
done

需求: 根据web服务器上的访问日志,把一些请求量非常高的ip给拒绝掉!并且每隔半小时把不再发起请求或者请求量很小的ip给解封。 假设:

一分钟内请求量高于100次的IP视为不正常请求。

访问日志路径为/data/logs/access_log。

用第2例中的1.log作为演示日志

核心要点
统计ip访问次数,排序
如何标记每隔半小时
iptables计数器是一个重要的判断指标
函数(封IP、解封IP) 日志文件为1.log

#!/bin/bash
block_ip()
{
t1=date -d "-1 min" +%Y:%H:%M
log=/shell100/1.log
egrep "$t1[0-9]+"$log >/tmp/tmp_last_min.log
awk '{print $1}' 1.log|sort -n|uniq -c|sort -n|awk '$2>100 {print}' > /tmp/bad.ip_list
n=wc -l /tmp/bad.ip_list|awk '{print $1}'
if [ $n -ne 0 ]
then
for ip in cat /tmp/bad.ip_list
do
iptables -I INPUT -s $ip -j REJECE
done
fi
}

unblock_ip ()
{
iptables -nvL INPUT |sed '1d'|awk '$1<5 {print $8}'>/tmp/goog.ip_list
n=wc -l /tmp/goog.ip_list|awk '{print $1}'
if [ $n -ne 0 ]
then
for ip in cat /tmp/good_ip.list
do
iptabls -D INPUT -s $ip -j REJECT
done
fi
iptables -Z
}

t=date +%M
if [ $t == "00" ]||[ $t == "30" ]
then
unblock_ip
block_ip
else
block_ip
fi
#将脚本添加到计划任务 crontab

请仔细查看如下几个数字的规律,并使用shell脚本输出后面的十个数字。

10 31 53 77 105 141 …….

核心要点
计算两个数值之间的差值

#!/bin/bash
x=10
y=21
for i in seq 0 15
do
echo $x
x=$[$x+$y]
z=$[2**$i] #幂指数运算
y=$[$y+$z]
done

转载于:https://blog.51cto.com/12948291/2339001

shell实战训练营Day14相关推荐

  1. shell实战训练营Day1

    1.shell基础介绍 shell是一个命令解释器.人机交互 有特定的语法 for if while 等 centos7中默认shell为bash,但也有ksh,zsh等shell 2.命令历史 hi ...

  2. shell实战训练营Day2

    6.管道符号与作业控制 管道符 | 把左边命令输出结果交给右边执行. cat /etc/passwd | grep -i root 列出passwd中包含 root的行. 作业控制 Ctrl+ z 暂 ...

  3. 企业Shell实战-MySQL分库分表备份脚本

    本文来自 http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.ht ...

  4. 拉勾启源老师mysql讲义,【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1...

    [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 以下是我搜罗的一些官方优秀case分享: 1.https:/ ...

  5. 限时免费 | 人工智能项目实战训练营,给你一个成为AI算法工程师的机会

    在当前的就业环境下,人工智能工程师的高薪优势凸显,可却有不少人陷入了瓶颈期,不知道该朝着哪个方向发展自己,"掌握理论知识但缺乏实战经验"成为了求职晋升路上的短板,硬件设备的不足和自 ...

  6. 免费课程 | 云脑机器学习实战训练营,中美大咖携手带你飞!

    随着机器学习的不断发展,人工智能掀起了新一轮的热潮.这次人工智能的复兴,最大的特点就是AI能够走入业界的真实应用场景,与商业模式紧密结合,开始在产业界发挥出真正的价值. 在业界的真实应用中,如何挖掘用 ...

  7. python进阶训练营百度网盘_(在线观看)【完结】私域流量实战训练营(百度网盘分享下载)...

    今日推荐(在线观看)[完结]私域流量实战训练营(百度网盘分享下载)对  (在线观看)[完结]私域流量实战训练营(百度网盘分享下载)感兴趣的朋友可以学习参考 (有需要的找我,你就可以拥有这个课程)需要此 ...

  8. “阿里云大数据技术实战训练营”江苏省大学生万人计划学术冬令营活动成功举行...

    2019年1月14日-23日,由江苏省教育厅主办,阿里云.常州大学承办的"阿里云大数据技术实战训练营"(以下简称"冬令营")江苏省大学生万人计划学术冬令营在常州 ...

  9. 7天物联网智能家居实战训练营(百问网)-day1

    目录 前言 一.学习路线 1.什么是嵌入式? 2.怎么学习嵌入式? 3.学习的基础内功? 二.基本概念 1.什么是arm? 2.arm架构的分类. 三.开发流程 1.交叉开发, 2.调试下载 前言 学 ...

最新文章

  1. 蹭了BCH热度,还来诋毁BCH,这些跳梁小丑到底在玩什么阴谋?
  2. ffmpeg 解码卡死
  3. Java中finalize()用法
  4. ad域 禁用账号_IST-AD域信息同步平台来袭
  5. ffmpeg 封面提取
  6. Mac环境下安装Pod
  7. Atitit postgre sql json使用法 目录 1.1.1. 插入数据 1 2. json数据的常见操作 1 1.1.1.插入数据 插入数据可以直接以json格式插入: insert
  8. 二、语音合成(TTS)
  9. 沃特玛采集均衡模块_采集均衡模块以及电池管理系统_2016212573884_说明书_专利查询_专利网_钻瓜专利网...
  10. 《嵌入式 – GD32开发实战指南》第13章 DAC
  11. IDEA 2017 破解 license 激活
  12. 微信小程序之组件的四种传值方式
  13. 微服务的设计模式,你用了几个
  14. 干货满满的 GopherChina2021 北京大会 PPT is coming
  15. ABP框架 - 我的第一个Web API
  16. 力扣解法汇总661- 图片平滑器
  17. JS 正则表达式常用方法
  18. iPhoneX适配之UI设计、交互设计
  19. 第二季2:视频缓存池的简介
  20. Java时间戳转化汇总

热门文章

  1. Java语言程序设计基础篇 循环(四)练习
  2. C#输出带有换行符的字符串
  3. 99%学习前端开发都会遇到的问题,百分之百都没绝对意识
  4. Sr Software Engineer - Big Data Team
  5. PHP_TP5框架开发后端接口(代码编写思路)
  6. Jquery根据JSON生成Table
  7. 管理刀片服务器的KVM切换器
  8. 流程型企业SCM、ERP、MES、PCS如何集成?
  9. Python将迁移到GitHub
  10. leetcode9. 回文数