需求1:使用root用户清空/var/log/messages日志,并每次执行保留最近100行

1.必须是root用户

2.需要保留最后100行


[root@manager if]# cat if-19.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-19.sh URL: https://www.xuliangwei.com Description: Log_Path=/var/log/messages #如果是普通用户则拒绝
if [ $UID -ne 0 ];then
echo "Permission denied...."
exit 1
fi if [ -f $Log_Path ];then
#先提取100行的内容写入新的文件
tail -100 $Log_Path >/var/log/messages_bak #将新的文件重新写入到/var/log/messages中
cat /var/log/messages_bak > $Log_Path #最后删除文件
rm -f /var/log/messages_bak #输出结果
echo "clean log done...." else
echo "$Log_Path No such file or directory"
exit 2 fi

需求2:判断httpd服务是否正常启动, 脚本名必须为httpd_deamon.sh

	1.手动如何看这个服务是正常的
​ 1.ps
​ 2.losf netstat
​ 3.curl 200 301 302
​ 4.systemctl systemctl status httpd &>/dev/null
if [ $? -eq 0 ];then
echo "httpd is ok...."
else
systemctl start httpd &>/dev/null
if [ $? -eq 0 ];then
echo "Httpd 重新启动ok"
else
echo "httpd 重新启动失败"
fi
fi ---------------------------------------------------------------- Description: Httpd_status=$(ps aux|grep httpd | grep -v grep |wc -l) if [ $Httpd_status -ge 1 ];then
echo "httpd service is ok"
else
systemctl start httpd &>/dev/null
if [ $? -eq 0 ];then
echo "重新拉起成功"
else
echo "重新拉起失败"
fi
fi -------------------------------------------------------- Description: Httpd_Status=$(curl -sI localhost | awk '/HTTP/ {print $2}') if [[ "$Httpd_Status" -eq 200 || "$Httpd_Status" -eq 301 || "$Httpd_Status" -eq 302 ]];then
echo "Httpd is ok ...."
else
echo "Httpd is down...."
echo "尝试复活中......."
sleep 3
systemctl start httpd &>/dev/null
if [ $? -eq 0 ];then
echo "复活成功"
else
echo "复活失败"
fi
fi

需求3:根据不同的系统版本,配置不同的yum源

1.获取相同系统,不同的版本

2.根据不同系统的不同版本实现

1.判断是centos还是ubuntu

2.根据判断的条件进入嵌套if

3.根据不同的系统配置不同yum源

[root@manager if]# cat if-23.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-23.sh URL: https://www.xuliangwei.com Description: system_status=$(cat /etc/redhat-release | awk '{print $(NF-1)}') if [ ${system_status%%.} -eq 7 ];then
echo "systemctl 7"
elif [ ${system_status%%.} -eq 6 ];then
echo "systemctl 6"
fi

需求4:安装不同版本的PHP方式,使用echo输出即可,不用真的安装。

1.给一个选择的菜单

2.给一个数字编号 1 2 3 4

3.根据用户的选择进行判断

[root@manager if]# cat if-24.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-24.sh URL: https://www.xuliangwei.com Description: clear cat <<EOF 1) Installed PHP 5.5
2) Installed PHP 7.0
3) Installed PHP 7.3 4) quit EOF
read -p "请输入你要安装的版本 [ 1 | 2 | 3 | 4 ] " Action #判断空值
if [ -z $Action ];then
echo "请不要输出空值"
exit 1
fi #必须是数字
if [[ ! $Action =~ ^[0-9]+$ ]];then
echo "仅支持数字"
exit 1
fi if [ ${#Action} -ne 1 ];then
echo "仅支持一位数字"
exit 1
fi #判断
if [ $Action -eq 1 ];then
echo "1) Installed PHP 5.5"
elif [ $Action -eq 2 ];then
echo "2) Installed PHP 7.0" elif [ $Action -eq 3 ];then
echo "3) Installed PHP 7.3" else
exit 1
fi

需求5:

1.如果姑娘小于18岁,打印“未成年”

2.如果姑娘大于18岁小于25岁,打印“表白”

3.如果姑娘大于25岁小于45岁,打印“阿姨好”。

4.如果姑娘大于45岁,打印“奶奶好”

read -p "请输入你的年龄" girl
11 if [ $girl -lt 18 ];then
12 echo "未成年"
13 elif [ $girl -ge 18 -a $girl -lt 25 ];then
14 echo "表白"
15 elif [ $girl -ge 25 -a $girl -lt 45 ];then
16 echo "阿姨好"
17 elif [ $girl -gt 45 ];then
18 echo "奶奶好"
19 fi

需求6:写一个脚本,提示用户输入身高,如果身高达到180以上全票,120以下免票,其余不能进。

1.需要交互

2.判断 超过180

3.判断 低于120

4.其他 over

[root@manager if]# cat if-25.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-25.sh URL: https://www.xuliangwei.com Description: read -p "请输入你的身高: " Action if [ $Action -ge 180 ];then
echo "全票"
else
if [ $Action -lt 120 ];then
echo "免票"
else
echo "over"
exit
fi
fi

需求7:判断一个机器是否存活,能ping通就算存活。

 10 read -p "请输入你的ip地址" new_ip
11 ping -W1 -c1 -t3 $new_ip &>/dev/null
12 if [ $? -eq 0 ];then
13 echo "你的机器已存活"
14 else
15 echo "你的机器没有存活"
16 fi

需求8:写一个Nginx安装脚本,加入判断,当上一步执行成功在执行下一步,否则退出脚本

1.网络

2.源

3.安装

4.判断

[root@manager if]# cat if-26.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-26.sh URL: https://www.xuliangwei.com Description: #1.网络
ping -W1 -c1 www.baidu.com &>/dev/null
if [ $? -ne 0 ];then
echo "网络存在故障...."
exit 1
fi #2.源 记得要判断系统
if [ -f /etc/yum.repos.d/epel.repo ];then
if [ -s /etc/yum.repos.d/epel.repo ];then
echo "yum repos skip ...."
else
echo "epel 为空 wget ..."
#wget ....
fi
else
echo "epel文件不存在"
#wget .......
fi #3.安装
rpm -q nginx &>/dev/null
rc=$? if [ $rc -eq 0 ];then
echo "nginx已安装"
else
yum install nginx -y
fi

需求9:在每月第一天备份并压缩/etc目录的所有内容,存放到/opt/bak目录,存放的形式

2019_04_10_etc.tar.gz,脚本名称为fileback,存放在/root的家目录下。

1.备份什么	/etc
2.备份到哪 /root/bak
3.备份周期 每月1号 crond [root@manager if]# cat if-27.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-27.sh URL: https://www.xuliangwei.com Description: Dest_Dir=/opt/bak
Date=$(date +%F)
#准备存放的目录
if [ ! -d $Dest_Dir ];then
mkdir -p $Dest_Dir
fi #打包并将内容存放置备份的目录
cd / && tar czf $Dest_Dir/etc_${Date}.tar.gz etc #判断是否ok
if [ ! -f $Dest_Dir/etc_${Date}.tar.gz ];then
echo "备份失败>......"
fi

需求10.监控内存小于500M和磁盘容量小于10G,则发邮件报警

1.剩余内存低于500M free -m |awk '/^Mem/ {print \(NF}'**
​ **2.剩余磁盘低于10G df -h|awk '/\/\)/ {print $(NF-2)}'


[root@manager if]# cat if-28.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-28.sh URL: https://www.xuliangwei.com Description: Free=$(free -m |awk '/^Mem/ {print $NF}')
Disk=$(df -h|awk '/\/$/ {print $(NF-2)}') if [ $Free -lt 500 -a ${Disk%G} -lt 10 ];then
echo "报警......"
else
echo "目前一切良好"
echo "内存是: ${Free}M 磁盘是: $Disk"
fi

需求11.检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员

[root@manager if]# cat  if-29.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-29.sh URL: https://www.xuliangwei.com Description: if [ $UID -eq 0 ];then
yum install vsftpd -y
else
echo "你不是管理员>.."
exit
fi 3.输入三个数并进行升序排序
[root@manager if]# cat if-30.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-30.sh URL: https://www.xuliangwei.com Description: if [ $# -ne 3 ];then
echo "请传递三个参数"
exit
fi
echo "$1 $2 $3" | xargs -n1 | sort -n

需求15.提示用户输入年份后判断该年是否为闰年 能整除4, 并且不能被100整除则为 闰年

1.传递年份 2012 2013

2.用年份除以4

在用年份除以100

如果有余数 则是润年

如果没有 则是平年

[root@manager if]# cat if-32.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-32.sh URL: https://www.xuliangwei.com Description: read -p "请输入你想检测的年份: " Action
#1.先除以4
rn=$(( ${Action} % 4 ))
rn_2=$(( ${Action} % 100 ))
rn_3=$(( ${Action} % 400 )) #1.判断是否能被400整除
if [ $rn_3 -eq 0 ];then
echo "$Action 为闰年"
exit
else
#2.没有被400整除的, 先除以4
if [ $rn -eq 0 ];then
#3.成立,在除以100,有余数则润
if [ $rn_2 -ne 0 ];then
echo "$Action 为闰年"
exit
fi
fi
fi ​ echo "$Action 为平年"
第二种方法
read -p "请输入年份: " Y
if [ $[$Y%4] -eq 0 -a $[$Y%100] -ne 0 ] || [ $[$Y%400] -eq 0 ];then
echo "$Y 是闰年"
else
echo "$Y 是平年

需求16.根据用户输入密码位数,生成随机密码(包含数字、大小写字母、特殊符号)

[root@manager if]# cat if-31.sh
#!/bin/bash Author: Oldux.com QQ: 552408925 Date: 2019-10-30 FileName: if-31.sh URL: https://www.xuliangwei.com Description: read -p "请输入你想生成的随机数密码位数: " Action
#控制回车 #控制必须是数字 if [ $Action -ge 7 -a $Action -lt 20 ];then
mkpasswd -l $Action
else
echo "复杂度密码必须7位以上"
fi

shell 编程练习题2的更多相关文章

  1. shell编程练习题

    求2个数之和 计算1-100的和 将一目录下所有的文件的扩展名改为bak 编译当前目录下的所有.c文件: 打印root可以使用可执行文件数,处理结果: root's bins: 2306 打印当前ss ...

  2. sed命令详解 vim高级技巧 shell编程上

    第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 10 ...

  3. Shell编程进阶篇(完结)

    1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或 ...

  4. shell编程企业级实战

    如何才能学好Shell编程 为什么要学习shell编程 Shell是Linux底层核心 Linux运维工作常用工具 自动化运维必备基础课程 学好shell编程所需Linux基础 熟练使用vim编辑器 ...

  5. Shell编程(week4_day3)--技术流ken

    本节内容 1. shell流程控制 2. for语句 3. while语句 4. break和continue语句 5. case语句 6. shell编程高级实战 shell流程控制 流程控制是改变 ...

  6. 【转】Shell编程进阶篇(完结)

    [转]Shell编程进阶篇(完结) 1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最 ...

  7. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  8. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  9. linux运维、架构之路-shell编程(一)

    一.shell编程入门必备基础 1.vim编辑器的命令,vimrc设置 2.150个linux基础命令 3.linux中基础的系统服务crond,ssh网络服务,nfs,rsync,inotify,l ...

随机推荐

  1. ETCD:TLS

    原文地址:TLS etcd支持用于客户端到服务器以及对等方(服务器到服务器/集群)通信的自动TLS以及通过客户端证书的身份验证. 要启动并运行,首先要获得一个成员的CA证书和签名密钥对. 建议为集群中 ...

  2. 基于SpringCloud实现Shard-Jdbc的分库分表模式,数据库扩容方案

    本文源码:GitHub·点这里 || GitEE·点这里 一.项目结构 1.工程结构 2.模块命名 shard-common-entity: 公共代码块 shard-open-inte: 开放接口管理 ...

  3. Spring Boot 2.2.2.RELEASE 版本中文参考文档

    写在前面 在我初次接触MongoDB的时候,是为了做一个监控系统和日志分析系统.当时在用Java操作MongoDB数据里的数据的时候,都是在网上查找Demo示例然后完成的功能,相信大家也同样的体会,网 ...

  4. maven仓库之第一篇

    maven jar仓库 :存放maven项目使用的jar包. 中央仓库,存放99%免费开源项目jar包,apache公司负责维护的,以T为单位的存储. 例如 : struts2-core-2.3.24 ...

  5. centOS如何灵活管理服务进程

     1.将程序跑起来,且关闭会话时程序仍在运行. nohup node index.js & (头部加了nohup,表示在你退出帐户或关闭终端之后继续运行相应的进程;尾部的&表示在后台执 ...

  6. 【分享】Jenkins自动化部署全套视频教程

    1.课件 见博客:在线课件 2.教程列表 课程概况:该课程共8节,时长约80分钟. 建议学习方式:你可以在上班的路上或中午休息的时候,将视频调到1.5的观看速度,视频全部看完后,在按照课件操作. 3. ...

  7. 26-限制容器对CPU的使用

    默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定,默认值为 1024. 与 ...

  8. Linux 和 Windows 查看当前运行的 python 进程及 GPU、CPU、磁盘利用率

    目录 查看当前 python 进程 Linux Windows 查看 GPU 利用率 Linux Windows Linux CPU 利用率 Linux 磁盘利用率 查看当前 python 进程 Li ...

  9. acwing 81. 扑克牌的顺子

    地址 https://www.acwing.com/problem/content/77/ 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的. 2-10为数字本身,A为1,J为11, ...

  10. 解决谷歌浏览器在F12情况下自动断点问题(Paused in debugger)

    解决谷歌浏览器在F12情况下自动断点问题(Paused in debugger) 最近在使用谷歌浏览器在调试js脚本的时候,每次按F12,再刷新页面,都会跳出如上图所示的图标,自动进入断点调试.如果不 ...