美文网首页
shell练习题2

shell练习题2

作者: 吃可爱长大鸭 | 来源:发表于2019-11-08 14:22 被阅读0次

    1.PHP-fpm 启动脚本

    #!/bin/bash
    [ -f /etc/init.d/functions ] && . /etc/init.d/functions
    
    sou=/opt/php-fpm.txt
    
    if [ -f $sou ];then
        echo "此脚本正在使用"
        exit
    fi
    
    if [ ! $USER == "root" -a ! $UID -eq 0 ];then
        echo "没有权限可以使用"
        exit
    fi
    if [ $# -ne  1 ];then 
        echo "请输入一个参数"
        echo "{start|stop|restart|status}"
        exit
    fi
    touch $sou  &>/dev/null
    pid=/var/run/php-fpm/php-fpm.pid
    
    case $1 in
        start)
            if [ -f $pid ];then
               action "服务正在运行。。。" /bin/true
           else
               systemctl start php-fpm
               if [ $? -eq 0 ];then
                   action "服务启动成功!" /bin/true
               else
                   action "服务启动失败!" /bin/false
               fi
           fi
           ;;
        stop)
            if [ -f $pid  ];then
             systemctl stop php-fpm
                if [ $? -eq 0 ];then
                    action "服务停止成功!" /bin/true
                else
                    action "服务停止失败!" /bin/false
                fi
            else
                echo "服务没有运行。。。"
            fi
            ;;
        reload)
            if [  -f $pid ];then
            systemctl reload php-fpm
               if [ $? -eq 0 ];then
                   action "服务平滑启动成功!" /bin/true
               else
                   action "服务平滑启动失败!" /bin/false
               fi
           else
               echo "服务平滑没有运行。。。"
           fi
           ;;
        status)
            if [ -f $pid ];then
                action "服务运行状态!" /bin/true
            else
                action "服务关闭状态!" /bin/false
            fi
            ;;
        restart)
            if [ -f $pid ];then 
               systemctl  stop php-fpm
               if [ $? -eq 0 ];then
                   action "服务停止成功!" /bin/true
               else
                   action "服务停止失败!" /bin/false
               fi
               sleep 3
               systemctl start php-fpm
                   if [ $? -eq 0 ];then
                      action "服务启动成功!" /bin/true
                   else
                      action "服务启动失败!" /bin/false
                   fi
            else
                action "php-fpm  服务没有在运行。。。"  /bin/true
                systemctl start php-fpm
                   if [ $? -eq 0 ];then
                      action "服务启动成功!" /bin/true
                   else
                      action "服务启动失败!" /bin/false
                   fi
            fi
            ;;
        *)
            echo "请你选择{start|stop|restart|status}"
    esac
    rm -rf $sou
    

    2.根据学生录入的成绩判断,学生的优劣

      0-60  补考
      60-80 合格
      80-100 优秀
    
    思路:
         两个条件判断
         考虑整数
         不能回车为空
    
    #!/bin/bash
    read -p "请输入[0-100]:" ll
    if [[ ! $ll =~ ^[0-9]+$ || $ll -gt 100  ]];then
        echo "你输入的分数不对!"
    fi
    if [ $i -gt 80  ];then
            echo "优秀!"
    elif [ $i -ge 60  ];then
            echo "合格!"
    else                                                                                              
            echo "补考!"
    fi
    

    3.写一个创建用户的脚本,需要输入创建用户的前缀,比如oldboy,以及后缀。比如123。

    提示用户输入要创建的用户的前缀,且必须是字母
    
    提示用户输入要创建的用户的后缀。且必须是数字
    
    将前缀和后缀进行结合
    
    在判断用户是否存在,存在则提示
    
    不存在,则创建
    
    #!/bin/bash
    read -p "请输入创建用户的前缀(字母):" qz
    
    if [ -z $qz ];then
        echo "不支持回车!"
        exit
    fi
    if [[ ! $qz =~ ^[a-Z]+$ ]];then
        echo "请输入字母!"
        exit
    fi
    read -p  "请输入创建用户的后缀(整数):" hz
    
    if [ -z $hz ];then
        echo "不支持回车!"
        exit
    fi
    if [[ ! $hz =~ ^[0-9]+$ ]];then
        echo "请输入一个整数!"
        exit
    fi
    
    User=${qz}${hz}
    
    id  $User  &>/dev/null
    
    if [ $? -eq 0 ];then
        echo "用户${User}已经存在"
    else
        useradd  $User  &>/dev/null
        if [ $? -eq 0 ];then
            echo "用户$User 创建成功!"
        else
            echo "用户$User 创建失败!"
            exit
        fi
    fi
    

    4.使用root用户清空/var/log/messages日志,并每次执行保留最近100行

    1.root用户执行  $USER    $UID  
    
    2.判断文件是否存在  
    
    3.保留最近100行文件
    
    #!/bin/bash
    #1.判断是否是root用户
    if [ ! $USER == "root"  -a  ! $UID -eq 0 ];then
        echo "该用户$USER 对此脚本$0 没有执行权限!"
        exit
    fi
    File=/var/log/messages
    if [ ! -f  $File ];then
        echo "$FIle 文件不存在!"
        exit
    fi
    if [ ! -s $File ];then
        echo "文件存在,但是文件中没有任何内容!"
        exit
    fi
    #2.清空并保留最近100行内容
    
    tail -100  $File >${File}.bak  && cat  ${File}.bak >$File 
    
    if [ $? -eq 0 ];then
        echo "日志清空成功!并保留了最近100行内容!"
        rm -f  ${File}.bak
    else
        echo "清空操作失败!"
    fi
    #!/bin/bash
    #1.判断是否是root用户
    if [ $USER == "root"  -a  $UID -eq 0 ];then
        File=/var/log/messages
        if [ -f  $File ];then
            if [ -s $File ];then
                tail -100  $File >${File}.bak  && cat  ${File}.bak >$File 
                if [ $? -eq 0 ];then
                    echo "日志清空成功!并保留了最近100行内容!"
                    rm -f  ${File}.bak
                else
                    echo "清空操作失败!"
                fi
            else
                echo "文件存在,但是文件中没有任何内容!"
                exit
            fi
        else
            echo "$FIle 文件不存在!"
            exit
        fi
    else
        echo "该用户$USER 对此脚本$0 没有执行权限!"
        exit
    
    

    5.判断某个服务是否正常启动

    位置变量  $1  
    判断用户是否执行脚本时加了位置变量
    是否运行
    端口是否存在
    进程是否存在
    
    systemctl  status  $1  
    
    netstat  -lntup  |grep  $1
    
    ps  aux|grep  $1  |grep  -v   grep   
    
    #!/bin/bash
    if [ $# -ne 1 ];then
        echo "请输入一个位置变量。"
        echo "Usage: $0 {sshd|nginx|php-fpm|rsync|mariadb}"
        exit
    fi
    Server=$1
    if [ $Server == "mariadb" ];then
        Server=mysqld
    fi
    #1.判断服务是否运行
    systemctl  status  $Server  &>/dev/null
    
    Rc=$?
    
    if [ $Rc -eq 0 ];then
        echo "服务$Server 正在运行....."
    elif [ $Rc -eq 4 ];then
        echo "没有$Server 这个服务!"
        exit
    elif [ $Rc -eq 3 ];then
        echo "服务$Server 没有运行..."
    else
        echo "你输入的服务名称不正确!"
    fi
    
    #2.判断端口号是否存在
    netstat  -lntup  |grep  $Server  &>/dev/null
    
    if  [ $? -eq 0 ];then
        echo  "服务$Server 端口号存在!"
    else
        echo  "服务$Server 端口号不存在!"
    fi
    
    #3.判断进程是否存在
    
    ps  aux |grep  $Server  | grep -v  grep  |grep -v  'pts'  &>/dev/null
    
    if  [ $? -eq 0 ];then
        echo  "服务$Server 进程存在!"
    else
        echo  "服务$Server 进程不存在!"
    fi
    

    6.系统管理菜单

    [root@web /scripts/day06]# cat  case-1.sh
    #!/bin/bash
    menu() {
    
    cat<<EOF
    ####################
    0.帮助信息
    1.系统版本
    2.系统虚拟平台
    3.系统内核版本
    4.Eth0-IP地址
    5.Eth1-IP地址
    6.外网IP地址
    7.内存使用情况
    8.磁盘使用情况
    9.退出
    #####################
    EOF
    }
    menu
    while true
    do
    read  -p  "请输入你要查看的选项,输入对应的数字:"  num
    
    if [[ ! $num =~ ^[0-9]$ ]];then
        echo "请按照提示输入对应的数字。"
        exit
    fi
    case $num  in
        0)
            menu
            ;;
        1)
             cat /etc/redhat-release |awk  '{print $1,$(NF-1)}'
             ;;
        2)
            hostnamectl   |awk '/Virtua/{print $NF}'
            ;;
        3)
            hostnamectl   |awk '/Kernel/{print $NF}'
            ;;
        4)
            ifconfig eth0  |awk  'NR==2{print $2}'
            ;;
        5)
            ifconfig eth1  |awk  'NR==2{print $2}'
            ;;
        6)
            curl -s  icanhazip.com
            ;;
        7)
            free -m
            ;;
        8)
            df -h
            ;;
        9)
            exit
            ;;
        *)
            echo "请按照要求输入。"
            exit
    esac
    done
    

    7.实现多级菜单功能

    思路:函数 循环

    主菜单  
    cat<<EOF  
    1.安装Nginx
    2.安装PHP
    3.退出
    EOF
    
    子菜单
    cat<<EOF 
    #####################
    1.安装Nginx-1.12
    2.安装Nginx-1.14
    3.安装Nginx-1.16
    4.返回主菜单
    #####################
    EOF  
    
    子菜单
    cat<<EOF
    #####################
    1.安装PHP-5.5
    2.安装PHP-5.6
    3.安装PHP-7.1
    4.返回主菜单 
    #####################
    EOF 
    
    #!/bin/bash
    master_menu() {
    cat<<EOF  
    ################
    1.安装Nginx
    2.安装PHP
    3.退出
    ################
    EOF
    }
    Nginx_menu() {
    cat<<EOF 
    #####################
    1.安装Nginx-1.12
    2.安装Nginx-1.14
    3.安装Nginx-1.16
    4.返回主菜单
    #####################
    EOF
    }
    Php_menu() {
    cat<<EOF
    #####################
    1.安装PHP-5.5
    2.安装PHP-5.6
    3.安装PHP-7.1
    4.返回主菜单 
    #####################
    EOF
    }
    master_menu
    trap "" HUP INT TSTP #禁止输入Ctrl+c
    while true
    do
        read -p  "请输入你要安装的服务:" Server
        case $Server in
            1)
                clear
                Nginx_menu
                while true
                do
                read -p "请输入你要安装的Nginx版本:" Version
                case $Version in
                    1)
                        echo "你选择是安装Nginx-1.12版本....."
                        echo "正在安装......."
                        sleep 2
                        echo "Nginx-1.12版本安装完成。"
                        ;;
                    2)
                        echo "你选择是安装Nginx-1.14版本....."
                        echo "正在安装......."
                        sleep 2
                        echo "Nginx-1.14版本安装完成。"
                        ;;
    
                    3)
                        echo "你选择是安装Nginx-1.16版本....."
                        echo "正在安装......."
                        sleep 2
                        echo "Nginx-1.16版本安装完成。"  
                        ;;
                    4)
                        clear
                        master_menu
                        break 
                esac
            done
                ;;
            2)
                clear
                Php_menu
                while true
                do
                read -p "请输入你要安装的PHP版本:" install
                case $install  in
                    1)
                        echo "你选择是安装PHP-5.5版本....."
                        echo "正在安装......."
                        sleep 2
                        echo "安装PHP-5.5版本完成....."
                        ;;
                    2)
                        echo "你选择是安装PHP-5.6版本....."
                        echo "正在安装......."
                        sleep 2
                        echo "安装PHP-5.6版本完成....."
                        ;;
                    3)
                        echo "你选择是安装PHP-7.1版本....."
                        echo "正在安装......."
                        sleep 2
                        echo "安装PHP-7.1版本完成....."
                        ;;
                    4)
                        clear
                        master_menu
                        break
                esac
                done
                ;;
            3)
                echo "你选择退出。"
                exit
                ;;
            *)
                echo "请按照要求输入。"            
        esac
    done
    

    8.创建用户,首先输入用户的前缀,判断前缀是否空,是否为字母,输入创建用户的数量,提示用户要创建的用户是什么,是否确认创建,判断数量是否是正整数,是否为空,是否确认创建 Y N .创建随机密码,判断是否是root用户。

    [root@web ~]# echo  $RANDOM |md5sum  |cut -c 1-10
    34e20f3dc6
    -l  指定密码的位数
    -c  小写字母
    -C  大写字母
    -d   数字
    -s   特殊符号
    
    [root@web ~]# mkpasswd -l 24 -c 6 -C 6 -d 6 -s 6
    3~'4AWi2E*oMXb9#dJ=87v+e
    
    tee    重定向,将输出结果重定向到文件中并输出到屏幕上面
    
    -a  追加
    
    #!/bin/bash
    if [ $USER == "root"  -a  $UID -eq 0 ];then
        echo  "当前用户为超级管理员,有创建用户的权限!"
    else
        echo  "该用户$USER 对此脚本$0 没有执行权限!"
        exit
    fi
    read -p "请输入你要创建用户的前缀(必须是字母):"  Qz
    if [ -z $Qz ];then
        echo "不支持回车!请按照要求输入字母!"
        exit
    fi
    if [[ $Qz =~ ^[a-Z]+$ ]];then
        echo "你输入的前缀符合要求,继续创建用户!"
    else
        echo "你输入的前缀不符合要求,游戏结束!"
        exit
    fi
    read -p "请输入你要创建用户的数量(必须是正整数):" num
    if [ -z $num ];then
        echo "不支持回车!请按照要求输入字母!"
        exit
    fi
    if [[ $num =~ ^[0-9]+$ ]];then
        echo "你输入的数字符合要求,继续创建用户!"
    else
        echo "你输入的数字不符合要求!无法创建用户!"
        exit
    fi
    read -p "你要创建的用户为:${Qz}1..${Qz}${num},是否确认创建[Yes|No]:" Qr
    if [ -z $Qr ];then
        echo "不支持回车!请按照要求输入[Yes|No]!"
        exit
    fi
    case $Qr  in
        Y|Yes|yes|y)
            echo "你选择了创建用户。"
            for i in  $(seq $num )
            do
                User=${Qz}$i
                id $User  &>/dev/null
                if [ $? -eq 0 ];then
                    echo "用户已经存在!"
                else
                    useradd $User  &>/dev/null  
                    if [ $? -eq 0 ];then
                        echo "用户$User 创建成功!"
                        Pass=$(mkpasswd -l 24 -c 6 -C 6 -d 6 -s 6)
                        echo $Pass |passwd --stdin $User  &>/dev/null
                        if [ $? -eq 0 ];then
                            echo "用户$User 密码设置成功!密码信息存放在/root/${Qz}_pass.txt。"
                            echo -e  "User: $User \t\t Password: $Pass " >>/root/${Qz}_pass.txt
                        else
                            echo "用户$User 密码设置失败!"
                            continue
                        fi
                    else
                        echo "用户$User 创建失败!"
                        continue
                    fi
                fi
            done
            chmod 400 /root/${Qz}_pass.txt  &>/dev/null
            ;;
        N|No|no|n)
            echo "你选择不创建用户!"
            exit
            ;;
        *)
            echo "你输入的不符合要求,请按照要求输入[Yes|No]"        
    esac
    

    9.删除用户高级版脚本

    #!/bin/bash
    if [ $USER == "root"  -a  $UID -eq 0 ];then
        echo "该用户$USER 有删除用户的权利!"
    else
        echo "该用户$USER 没有删除用户的权利!"
        exit
    fi
    read -p "请输入你要删除用户的前缀(必须是字母):" Qz
    
    if [ -z  $Qz ];then
        echo "不支持回车键,请按照要求输入。"
        exit
    fi
    if [[ $Qz =~ ^[a-Z]+$ ]];then
        echo "你输入的前缀符合要求!继续删除用户!"
    else
        echo "你输入的前缀不符合要求!"
        exit
    fi
    read  -p  "请输入你要删除用户的数量(必须是正整数):" num
    if [ -z  $num ];then
        echo "不支持回车键,请按照要求输入。"
        exit
    fi
    if [[ $num =~ ^[0-9]+$ ]];then
        echo "你输入的数字符合要求!"
    else
        echo "你输入的数字不符合要求!"
        exit
    fi
    read -p  "你要删除的用户是${Qz}1..${Qz}${num},是否确认删除[Yes|No]:" Qr
    if [ -z  $Qr ];then
        echo "不支持回车键,请按照要求输入。"
        exit
    fi
    if [[ $Qr =~ ^[a-Z]+$ ]];then
        echo "你选择删除用户!继续删除"
    else
        echo "你输入的不符合要求!请按照要求输入[Yes|No]"
        exit
    fi
    case $Qr in
        Y|Yes|y|yes)
            for i in $(seq $num)
            do
                User=${Qz}$i
                id $User &>/dev/null 
                if [ $? -eq 0 ];then
                    userdel -r  $User &>/dev/null
                    if [ $? -eq 0 ];then
                        echo "$User 用户删除成功!"
                    else
                        echo "$User 用户删除失败!"
                    fi
                else
                    echo "用户$User 不存在!"
                fi
            done
            ;;
        N|No|n|no)
            echo "你选择不删除用户!你很谨慎!"
            exit
            ;;
        *)
            echo "请不要乱输!"
            exit
    esac
    

    10.编写一个上课随机点名脚本。

    for   有个名单  循环多少次   先统计名单人员的数量       随机数      取余  
    
    #!/bin/bash
    Stu_count=$(wc -l student.txt|awk '{print $1}')
    for i in {1..20}
    do
        Random=$(echo $(( $RANDOM % $Stu_count + 1 )))
        sed -n  "${Random}p"  student.txt
        sleep  0.2
    done
    stu_name=$(sed -n  "${Random}p"  student.txt)
    echo -e  "天玄子:\033[32m $stu_name \033[0m"
    
    #严谨版的学生点名脚本
    #!/bin/bash
    Stu_file=student.txt
    if [ ! -f $Stu_file ];then
        echo  "学生人员名单文件$Stu_file 不存在!"
        exit
    fi
    if [ ! -s $Stu_file ];then
        echo "学生人员名单文件存在,但是是空的!"
        exit
    fi
    grep -E '^[ \t]*$' $Stu_file  &>/dev/null
    if [ $? -eq 0 ];then
        echo "学生人员名单中存在空格,取值会出现空行的情况!"
        exit
    fi
    Stu_count=$(wc -l $Stu_file |awk '{print $1}')
    for i in {1..20}
    do
        Random=$(echo $(( $RANDOM % $Stu_count + 1 )))
        sed -n  "${Random}p"  student.txt
        sleep  0.2
    done
    stu_name=$(sed -n  "${Random}p"  $Stu_file)
    echo -e  "天玄子:\033[32m $stu_name \033[0m"
    

    11.使用for循环实现数据库的分库分表备份。

    #备份库
    [root@web /scripts/day07]# mysqldump  -uroot -p123  -B  mysql  >mysql.sql
    
    #备份表
    [root@web /scripts/day07]# mysqldump  -uroot -p123  wordpress wp_users   >wordpress_wp_users.sql
    
    #取出所有要备份的数据库
    [root@web /scripts/day07]# mysql -uroot -p123  -e "show databases;" |sed 1d | grep -v '.*schema'
    mysql
    test
    wordpress
    world
    
    #取出wordpress数据库中的所有表
    [root@web /scripts/day07]# mysql -uroot -p123 -e "use wordpress;show tables;" |sed 1d
    wp_commentmeta
    wp_comments
    wp_links
    wp_options
    wp_postmeta
    wp_posts
    wp_term_relationships
    wp_term_taxonomy
    wp_termmeta
    wp_terms
    wp_usermeta
    wp_users
    
    #!/bin/bash
    Db_User=root
    Db_Pass=123
    Bak_Dir=/backup/mysql
    Date=$(date +%F)
    Db_list=$(mysql -u$Db_User -p$Db_Pass  -e "show databases;" |sed 1d | grep -v '.*schema')
    [  -d $Bak_Dir ] || mkdir -p $Bak_Dir
    for Database in $Db_list
    do
        mysqldump -u$Db_User -p$Db_Pass --single-transaction -B $Database  >$Bak_Dir/${Date}_${Database}.sql 
        if [ $? -eq 0 ];then
            echo "数据库$Database 备份成功....."
            Table_list=$(mysql -u$Db_User -p$Db_Pass -e "use $Database;show tables;" |sed 1d)
            for Tables in $Table_list
            do
                mysqldump -u$Db_User -p$Db_Pass --single-transaction $Database $Tables >$Bak_Dir/${Date}_${Database}_${Tables}.sql
                if [  $? -eq 0 ];then
                    echo "数据库$Database 下的表$Tables 备份成功......"
                else
                    echo "数据库$Database 下的表$Tables 备份失败......"
                fi
            done
        else
            echo "数据库$Database 备份失败....."
        fi
    done
    

    12.批量创建用户脚本,需要用户输入创建的用户数量(必须是整数),以及需要用户输入创建的前缀(不能为空),次脚本仅root可以执行,其他用户无法执行,创建用户的密码是随机密码,并保存到一个指定的文件中,例如:前缀qzg,个数10,代表创建qzg1~qzg10,总共10个用户.

    #!/bin/bash
    read -p "请输入要创建的用户:" mun 
    if [ -z $mun  ];then
        echo "前缀不支持空"
        exit
    fi
    read -p "请输入要创建的个数:" gs
    if [[ ! $gs =~ ^[0-9]+$ ]];then
        echo "你输入的不是一个整数"
        exit
    fi
    echo "用户$mun  个数$gs"
    read -p "你要创建以上用户么[Y|N]: " i
    case $i in
        y|Y|yes|YES)
            for i in `seq 1 $gs`
            do
                user=${mun}${i}
                id $user &>/dev/null
                rc=$?
                if [ $rc -eq 0  ];then
                    echo  "用户已经存在!" 
                else
                    useradd $user
                    if [ $? -eq 0 ];then
                       echo "用户创建成功!"
                   else
                       echo  "用户创建失败!" 
                   fi
                fi
            done
            ;;
        n|N|NO|no)
            echo "你确定这么创建。。。" 
            exit
            ;;
        *)
            echo "你输入的不对请重新输入" 
            exit
    esac
    

    13.批量探测主机存活状态172.16.1.{1..254},扫描次主机的22端口,是否存活

    #!/bin/bash
    a=1
    while [ $a -le 254  ]
    do
        {
            
        ping -c1 -W1 10.0.0.$a &>/dev/null
        if [ $? -eq 0 ];then 
            echo "10.0.0.$a ip是通的"
            nmap -p22 10.0.0.$a |grep 22 &>/dev/null
            if [ $? -eq 0 ];then
               Port=$(nmap -p22 10.0.0.$a |grep  22|awk '{print $2}')
               if [ $Port == "open" ];then
                   echo "10.0.0.$a sshd的端口是开放的"
               else
                   echo "10.0.0.$a sshd的端口是不开放的"                                              
                fi
            fi
        fi
          } &
    done
    

    14.统计Nginx日志中每个IP的访问量有多少,日志如下:

    192.168.56.1 - - [21/May/2018:20:44:06 -0400] "GET /index.html HTTP/1.0" 404 169 "-" "ApacheBench/2.3" "-"/code/index.html

    awk '{print $1}' nginx.txt |sort|uniq -c|sort -nr|head 
    

    15.编写一个脚本,计算100以内所有能被3整除数字的和

    #!/bin/bash
    
    sum=0
    for i in `seq 1 100`
    do
        aa=$(expr $i % 3)
        if [ $aa -eq 0 ];then
           sum=$[$sum+$i]
        fi
    done
    echo "100以内能被3整除的数和为 $sum"
    

    16.写一个Shell脚本通过curl命令返回的状态码来判定所访问的网站是否正常,比如当前状态码200,才算正常

    #!/bin/bash
    
    read -p "请出入一个你想curl的网站域名: " yu
    if [ -z $yu ];then
       echo "请不要输入一个空的域名"
       exit
    fi
    curl -I -s $yu &>/dev/null
    if [ $? -eq 0 ];then
       echo "域名真实存在"
       aa=$(curl -I -s $yu|awk 'NR==1 {print $2 }')
       if [ $aa -eq 200 ];then
          echo "$yu 这个网站正常"
       else
          echo "$yu 这个网站不正常"
       fi
    else
       echo "域名不存在"
    fi
    

    17.抓阄题目学生外出企业项目实践机会来了,但是,名额有限,队员限3人,因此需要挑选学生,因此需要一个抓阄的程序:

    要求:
    (1)执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。
    (2) 第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入。

    while true                                                                                                          
    do
        sj=`echo $(($RANDOM%99+1))`
        cf=`grep -w "$sj" name.txt|wc -l`
        if [ $cf -eq 1 ];then
            continue
        else
            read -p "请输入您的英文名[gouzi]: " name
            if [ -z $name ];then
                continue
            else
                if [ $name == "exit" ];then
                    break
                fi
            fi
            echo -e "$name \t $sj " | tee -a name.txt
        fi
    done
    cat name.txt |sort -nrk2|head -n3
    

    18.系统初始化

    #!/bin/bash
    [ -f /etc/init.d/functions ] && . /etc/init.d/functions 
    ZT=$1
    FIREWALLD () {
        systemctl stop firewalld
        if [ $? -eq 0 ];then
            action "防火墙关闭成功!" /bin/true
        else
            action "防火墙关闭失败!" /bin/false
        fi
    }
    Selinux () {
        sum=$(cat /etc/selinux/config |awk -F= 'NR==7{print $2}')
        if [ $sum = disabled  ];then
            action "selinux 关闭成功!" /bin/true
        else
            action "selinux 关闭失败!" /bin/false
        fi
    }
    Yum () {
        Version=$(awk  '{print $(NF-1)}'  /etc/redhat-release)
        if [ ${Version%%.*} -eq 6 ];then
             rm  -rf  /etc/yum.repos.d/*  &>/dev/null
             if [ $? -eq 0];then
                 action "开始安装Base源。。。" /bin/true
                 curl -s  -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo  
                 if [ $? -eq 0 ];then
                     action "Base安装成功!" /bin/true
                     curl -s  -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
                     if [ $? -eq 0 ];then
                         action "eplo源 安装成功" /bin/true
                     else
                         action "eplo源 安装失败" /bin/false
                     fi
                 else
                     action "Base安装失败!" /bin/false
                 fi
            else
             action "没有该版本的源!" /bin/false
             exit
            fi
            elif [ ${Version%%.*} -eq 7 ];then
             rm  -rf  /etc/yum.repos.d/*  &>/dev/null
             if [ $? -eq 0 ];then
                 action "开始安装Base源。。。" /bin/true
                 curl -s  -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  
                 if [ $? -eq 0 ];then
                     action "Base安装成功!" /bin/true
                     curl -s  -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
                     if [ $? -eq 0 ];then
                         action "eplo源 安装成功" /bin/true
                     else
                         action "eplo源 安装失败" /bin/false
                     fi
                 else
                     action "Base安装失败!" /bin/false
                 fi
         else
             action "没有该版本的源!" /bin/false
             exit
         fi
         fi   
    }
    case $ZT in
        firewalld)
            FIREWALLD
            ;;
        selinux)
            Selinux
            ;;
        yum)
            Yum
            ;;
        *)
            echo "你输入的不对输入 {firewalld|selinux|yum}"
            exit
    esac
    

    相关文章

      网友评论

          本文标题:shell练习题2

          本文链接:https://www.haomeiwen.com/subject/yeqbbctx.html