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!
RHCE脚本题目详解的更多相关文章
- linux自动化交互脚本expect详解set timeout 5是 意思是在expect语句中,5s后超时,不再作出选择。
linux自动化交互脚本expect详解 更新时间:2020年10月21日 10:13:20 作者:lendsomething 这篇文章主要介绍了linux自动化交互脚本expect的相 ...
- jws.mono脚本安装详解
就在最近两天,最新版本的jws.mono上线了,这个版本除了提供与之前版本拥有的功能外,还额外提供了一个“自动化”的安装脚本,通过执行该脚本,jws.mono将自动快速的安装到指定的目录,同时,通过改 ...
- Velocity教程-脚本语法详解(转)
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Veloci ...
- linux添加开机自启动脚本示例详解
linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...
- js几个经典的题目详解
直接看题目,先不要急着看答案 先自己思考,收获更多 一 var out = 25, inner = { out: 20, func: function () { var out = 30; retur ...
- shell脚本进阶 详解及其实例(一)
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- gcc连接脚本lds详解
转载:blog.chinaunix.net/uid-28685940-id-3889918.html 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的 ...
- POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~
Steps Time Limit: 1000MS Memory Limit: 65536K http://poj.org/problem?id=2590 Description One ...
- LeetCode 873. 最长的斐波那契子序列的长度 题目详解
题目详情 如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的: n >= 3 对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_ ...
随机推荐
- OO 第二单元
前言 第二单元 OO 作业的主题是多线程,课程组通过了电梯调度这个经典问题考察了多线程的调度. 从第五次作业到第七次作业的迭代为,单部多线程可捎带电梯,多部多线程可捎带调度电梯(电梯属性相同) ...
- 原生php 实现 thinkphp 数据库链式操作!!!
https://www.bilibili.com/video/BV1v4411A74Q?p=16&spm_id_from=pageDriver 没事可以看两遍,加深一下基础知识!!!
- ASP.NET Core扩展库之Http通用扩展
本文将介绍Xfrogcn.AspNetCore.Extensions扩展库对于Http相关的其他功能扩展,这些功能旨在处理一些常见需求, 包括请求缓冲.请求头传递.请求头日志范围.针对HttpClie ...
- dubbo的spi思想是什么?
spi,简单来说,就是service provider interface,说白了是什么意思呢,比如你有个接口,现在这个接口有3个实现类,那么在系统运行的时候对这个接口到底选择哪个实现类呢?这就需要s ...
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作debian9.6.0-17
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之镜像制作debian9.6.0-17 欢迎加QQ群:1026880196 进行交流学习 制作Ope ...
- Day07_34_集合概述
集合概述 * 主要集合概述 - 集合相当于现实世界中的容器,主要包含两种存放模式,一个一个的存(Collection), 一对一对存(Map[key,value]) - 集合中只能存储引用数据类型,不 ...
- 哈工大LTP进阶使用-三元组事件抽取
哈工大LTP基本使用-分词.词性标注.依存句法分析.命名实体识别.角色标注 上一节我们讲了LTP的基本使用,接下来我们使用其进行事件抽取. 参考代码:https://github.com/liuhua ...
- 14.Quick QML-TextInput详解
1.TextInput属性用来编辑一行文本,对应QLineEdit,除了正常输入外,我们还可以设置echoMode属性改为密码显示状态,也可以通过validator属性和inputMask属性来设置验 ...
- 1.8.7- HTML值label标签
1.label直接进行包裹input就可以了.
- 11- APP性能测试GT工具的使用
对性能测试来说有服务端的性能与客户端(APP)的性能. GT简介 1.GT(随身调)是APP的随身调测平台,它是直接运行在手机上的"集成调试环境"(IDTE) 2.利用GT,仅凭一 ...