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_ ...
随机推荐
- CyclicBarrier:人齐了,老司机就可以发车了!
上一篇咱讲了 CountDownLatch 可以解决多个线程同步的问题,相比于 join 来说它的应用范围更广,不仅可以应用在线程上,还可以应用在线程池上.然而 CountDownLatch 却是一次 ...
- 99%的Python用户都不知道的f-string隐秘技巧
f-string想必很多Python用户都基础性的使用过,作为Python3.6版本开始引入的特性,通过它我们可以更加方便地向字符串中嵌入自定义内容,但f-string真正蕴含的功能远比大多数用户知道 ...
- 软工AI Bot NABCD分析
目标: 打造一个基于大数据的 IT 问答机器人服务,通过运用人工和AI 技术,极大提高问答产品的用户满意度. 适合高校<软件工程>,<人工智能>课程作为结对编程或者团队项目. ...
- 了解什么是redis的雪崩和穿透?redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理redis的穿透?
缓存雪崩发生的现象 缓存雪崩的事前事中事后的解决方案 事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃 事中:本地ehcache缓存 + hystrix限流&降级, ...
- 在Win10中手动添加/修改本地IP
1 前言 好久没动Win10了... 今天需要用Win10做一下实验,手动修改IP,于是写下了这篇文章作为过程记录. 2 概述 Win10里面修改本地IP不是一件特别困难的事,简单来说可以分为两种方式 ...
- 编写shell脚本让springboot项目在CentOS中开机自启动
springboot项目部署在CentOS系统上时,如果遇到停电关机,公司的实施人员就得跑到甲方现场重新启动项目并测试,很是麻烦,这里探讨如何编写shell脚本控制springboot项目开机时自动启 ...
- text-align: justify 文本对齐
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS3中Animation为同一个元素添加多个动画效果
CSS3 Animation 并未提供 给一个元素同时添加多个动画效果的方法,就是说一个元素,只能给它定义一个动画效果,不能同时定义. 需求说明比如说,我想实现一个这样的动画效果: 一颗星星从上往下滑 ...
- hdu2722 简单最短路,处理好输入就行
题意: 从左上角走到右下角,有的最短时间,每段路径的长度都是2520,每段上都有自己的限制速度,方向. 思路: 直接写就行了,就是个最短路,权值是2520/限制,输入的时候细心点 ...
- C#-自动获取IP
//自动获取ip rip是个下拉列表 public void GetIp() { try { string strHostName = Dns.GetHostName(); //得到本机的主机名 IP ...