zoukankan      html  css  js  c++  java
  • RHCE脚本题目详解

    RHCE脚本题目详解

    题目一

    system1上创建一个名为 /root/foo.sh 的脚本,让其提供下列特性:

    当运行 /root/foo.sh redhat ,输出为 fedora

    当运行 /root/foo.sh fedora ,输出为 redhat

    当没有任何参数或者参数不是 redhat 或者 fedora 时,其错误输出产生以下的信息:

    /root/foo.sh redhat | fedora

    shell脚本之if语句实现:

    #/bin/bash
    if [ "$1" == "redhat" ]
    then
            echo "fedora"
    elif [ "$1" == "fedora" ]
    then
            echo "redhat"
    else 
            echo "/root/foo.sh redhat | fedora"
    fi
    

    shell脚本之case语句实现:

    #!/bin/bash
    case $1 in
    redhat)
    echo "fedora"
    ;;
    fedora)
    echo "redhat"
    ;;
    *)
    echo "/root/foo.sh redhat|fedora"
    ;;
    esac
    

    题目二

    system1 上创建一个脚本,名为 /root/batchusers ,此脚本能实现为系统 system1 创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件,同时满足下列要求:

    此脚本要求提供一个参数,此参数就是包含用户名列表的的文件

    如果没有提供参数,此脚本应该给出下面的提示信息 Usage: /root/batchusers userfile 然后退出并返回相应的值

    如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found 然后退出并返回相应的值

    创建的用户登录shell/bin/false

    此脚本不需要为用户设置密码

    您可以从下面的URL获取用户名列表作为测试用 http://server.group8.example.com/pub/userlist

    实现

    #!/bin/bash
    if [ $# -eq 0 ] ; then
    	echo "Usage: /root/batchusers userfile"
    	exit 1
    fi
    if [ ! -f $1 ] ; then
    	echo "Input file not found" 
    	exit 2
    fi
    for name in $(cat $1)
    do
    	useradd -s /bin/false $name
    done
    

    测试

    由于shell的强大,此题亦有多种解法,此处提供一个批量删除用户user*的脚本,用于自行编写脚本测试

    #!/bin/bash
    #此处即为删除的user  user1-user8
    for i in {1..8}
    do
        userdel -r user$i
    done
    

    解析

    脚本第一题读懂没什么难度 熟悉shell编程 中 if语句 和case语句基本格式即可

    唯一一个迷惑人的参数$1放到下面第二题一并解释

    建议使用简单的if语句实现

    #指定/bin/bash执行该脚本
    #!/bin/bash
    # $#代表传入的参数个数  -eq代表等于 此处为0   即代表不传入任何参数 
    if [ $# -eq 0 ] ; then
    # 返回错误语句"Usage: /root/batchusers userfile"
    	echo "Usage: /root/batchusers userfile"
    #退出 返回相应的值
    	exit 1
    # shell中if语句的结构所需
    fi
    # !非 -f 后跟文件名 用于判断是否存在文件 
    if [ ! -f $1 ] ; then
    	echo "Input file not found" 
    	exit 2
    fi
    #使用for语句结合cat命令循环将传入文件(即变量$1所代表)中每一行字符串取出 并存入name变量里 
    for name in $(cat $1)
    do
    #添加用户 用户名为name变量的值 并设置-s /bin/false参数
    	useradd -s /bin/false $name
    done
    

    写在后面

    编辑shell脚本推荐使用vim编辑器

    注意if语句格式 每个参数和 '[' 或 ']'之间需要一个空格

    务必理解脚本含义 不要死记脚本 毕竟题目中给定的测试字符串以及错误输出可能会变动

    脚本编写完毕需要给予x执行权限chmod 755 filename 或者 chmod a+x filename

    That is all ! Have a nice rhce time!

  • 相关阅读:
    使用没有初始化变量很危险
    openssl动态库编译
    数据库水平切分及问题
    用dpkg命令制作deb包方法总结
    centOS安装mysql---glibc方式
    RabbitMQ常用命令
    shell脚本报错:-bash: xxx: /bin/bash^M: bad interpreter: No such file or directory
    mysql主从复制实现数据库同步
    CentOS 7.0下使用yum安装MySQL
    RabbitMQ的远程Web管理与监控工具
  • 原文地址:https://www.cnblogs.com/xbroad/p/11560397.html
Copyright © 2011-2022 走看看