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!

RHCE脚本题目详解的更多相关文章

  1. linux自动化交互脚本expect详解set timeout 5是 意思是在expect语句中,5s后超时,不再作出选择。

    linux自动化交互脚本expect详解  更新时间:2020年10月21日 10:13:20   作者:lendsomething     这篇文章主要介绍了linux自动化交互脚本expect的相 ...

  2. jws.mono脚本安装详解

    就在最近两天,最新版本的jws.mono上线了,这个版本除了提供与之前版本拥有的功能外,还额外提供了一个“自动化”的安装脚本,通过执行该脚本,jws.mono将自动快速的安装到指定的目录,同时,通过改 ...

  3. Velocity教程-脚本语法详解(转)

    Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Veloci ...

  4. linux添加开机自启动脚本示例详解

    linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...

  5. js几个经典的题目详解

    直接看题目,先不要急着看答案 先自己思考,收获更多 一 var out = 25, inner = { out: 20, func: function () { var out = 30; retur ...

  6. shell脚本进阶 详解及其实例(一)

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  7. gcc连接脚本lds详解

    转载:blog.chinaunix.net/uid-28685940-id-3889918.html 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的 ...

  8. POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~

    Steps Time Limit: 1000MS   Memory Limit: 65536K       http://poj.org/problem?id=2590 Description One ...

  9. LeetCode 873. 最长的斐波那契子序列的长度 题目详解

    题目详情 如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的: n >= 3 对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_ ...

随机推荐

  1. 系统编程-网络-tcp客户端服务器编程模型(续)、连接断开、获取连接状态场景

    相关博文: 系统编程-网络-tcp客户端服务器编程模型.socket.htons.inet_ntop等各API详解.使用telnet测试基本服务器功能 接着该上篇博文,咱们继续,首先,为了内容的完整性 ...

  2. 201871030125-王芬 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    实验三 软件工程结对项目 项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs ...

  3. AutoAssign源码分析

    目录 AutoAssign源码分析 一. 简介 二. 论文理论 2.1 联合表示 2.2 正样本权重 2.3 负样本权重 2.4 总的loss 2.5 补充loss 三. 论文代码 四. 总结 五. ...

  4. Java双刃剑之Unsafe类详解

    前一段时间在研究juc源码的时候,发现在很多工具类中都调用了一个Unsafe类中的方法,出于好奇就想要研究一下这个类到底有什么作用,于是先查阅了一些资料,一查不要紧,很多资料中对Unsafe的态度都是 ...

  5. 1.7.6- 浏览器审查HTML标签元素

    或者F12

  6. php讲转义符号与json文件的趣事情

    php中屡试不爽的数组和json json_encode与json_decode urlencode与urldecode addslashes与stripslashes addcslashes与str ...

  7. hdu2482 字典树+spfa

    题意:       给你一个地图,地图上有公交站点和路线,问你从起点到终点至少要换多少次公交路线. 思路:       首先上面的题意说的和笼统,没说详细是因为这个题目叙述的很多,描述起来麻烦, 下面 ...

  8. 逆向 stdio.h 函数库 fseek 函数(调试版本)

    0x01 fseek 函数 函数原型:int fseek(FILE *stream, long int offset, int whence) 函数功能:设置流 stream 的文件位置为给定的偏移 ...

  9. 还在一个模块打天下嘛?你知道引入Jetpack架构后,你的App会发生哪些奇妙的变化吗?

    前言 上篇文章我给大家分享了我对Android架构的理解,从思想层面去讲述架构的演进过程.很多小伙伴读完后拍手叫好,表示还想听我讲一下对Jetpack 架构的看法,本着帮人帮到底的精神,今天我将再次动 ...

  10. 什么?这么精髓的View的Measure流程源码全解析,你确定不看看?

    前言 Android开发中我们平时接触最多的是各种View, View是一个比较大的体系,包含了绘制流程.事件分发.各种动画.自定义View 等等.前几天我写了一篇事件分发源码解析的文章, 今天我们来 ...