17、创建一个脚本

在server0上创建一个名为/root/foo.sh的脚本,让其提供下列特性:
  当运行/root/foo.sh redhat,输出fedora
  当运行/root/foo.sh fedora,输出redhat
  当没有任何参数或者参数不是redhat或者fedora时,其错误输出产生以下的信息:/root/foo.sh redhat|fedora

[root@server0 ~]# vim /root/foo.sh
#!/bin/bash
case $1 in
redhat)
echo "fedora" ;;
fedora)
echo "redhat" ;;
*)
echo "/root/foo.sh redhat|fedora" ;;
esac [root@server0 ~]# chmod 775 foo.sh
[root@server0 ~]# chmod +x foo.sh
测试
[root@server0 ~]# ./foo.sh redhat
[root@server0 ~]# ./foo.sh fedora
[root@server0 ~]# ./foo.sh ddd

  

整数变量表达式
if [ int1 -eq int2 ] Equal 等于
if [ int1 -ne int2 ] not equal 不等于
if [ int1 -ge int2 ] greater equal >=
if [ int1 -gt int2 ] greater than >
if [ int1 -le int2 ] less equal<=
if [ int1 -lt int2 ] less than <

  

变量说明:
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

  

文件表达式
if [ -f file ] 如果文件存在
if [ -d ... ] 如果目录存在
if [ -s file ] 如果文件存在且非空
if [ -r file ] 如果文件存在且可读
if [ -w file ] 如果文件存在且可写
if [ -x file ] 如果文件存在且可执行

  

[root@server0 ~]# cat /etc/shells  查看shell 解释器
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh [root@server0 ~]# echo $PATH 查看环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@server0 ~]# which bash
/usr/bin/bash [root@server0 ~]# ll -i /usr/bin/bash
8399757 -rwxr-xr-x. 1 root root 960368 Jan 29 2014 /usr/bin/bash [root@server0 ~]# ll -i /bin/bash
8399757 -rwxr-xr-x. 1 root root 960368 Jan 29 2014 /bin/bash innode :索引编号 相同,是同一个文件 软连接
硬链接 [root@server0 ~]# bash foo.sh

  

标准输入,标准输入,错误输出,错误输入 ???
[root@server0 ~]# echo 22 > a
[root@server0 ~]# cat a
22
[root@server0 ~]# cat a d > /dev/null
cat: d: No such file or directory
[root@server0 ~]# cat a d &> /dev/null
[root@server0 ~]# cat a d 2&> e
[root@server0 ~]# cat a d 2> e

  

18、创建一个添加用户的脚本

在server0上创建一个名为/root/batchusers,此脚本能够实现为系统system1创建本地用户,并且这些用户的用户名来自一个包含用户名列表的文件,同时满足下列要求:
  此脚本要求提供一个参数,此参数就是包含用户名列表的文件
  如果没有提供参数,此脚本应该给出下面的提示信息Usage: /root/batusers userfile ,并且退出返回相应的值
  如果提供一个不存在的文件名,此脚本应该给出下面的提示信息 Input file not found然后退出并返回相应的值
  创建的用户登录shell为/bin/false
  此脚本不需要为用户设置密码 (注意:有得时候需要设置统一密码为redhat)
  您可以从下面的URL获取用户列表作为测试用
  http://classroom.example.com/materials/userlist

[root@server0 ~]# vim /root/batchusers    #不是sh脚本没有颜色提示

#!/bin/bash
if [ $# -eq 0 ];then #$# 参数个数 等于 0
echo "Usage: /root/batusers userfile"
exit 1
fi
if [ ! -f $1 ];then #-f 文件存在 $1第一参数
echo "Input file not found"
exit 2
fi
while read username #读文件一行
do
useradd -s /bin/false $username &> /dev/null
done < $1 #当没有读到东西时结束 [root@server0 ~]# chmod +x batchusers [root@server0 ~]# wget http://classroom.example.com/materials/userlist
[root@server0 ~]# cat userlist
[root@server0 ~]# id roy

 

测试
[root@server0 ~]# ./batchusers
Usage: /root/batchusers userfile
[root@server0 ~]# echo $? 最后运行的命令的结束代码(返回值)
1 [root@server0 ~]# ./batchusers eee
Input file not found
[root@server0 ~]# echo $?
2 [root@server0 ~]# ./batchusers userlist
[root@server0 ~]# echo $?
0
[root@server0 ~]# id roy
[root@server0 ~]# ./batchusers userlist
[root@server0 ~]# echo $?
9                #返回9 说明已经执行过了

  

21、部署MariaDB数据库

在server0上部署MariaDB。要求如下:
  仅允许从server0系统上使用登陆到数据库。
  登陆数据库所用的账号为root,密码为root_password。
  从http://content.example.com/courses/rhce/rhel7.0/materials/mariadb/mariadb.dump上下载文件,并将其恢复为legacy库。并设置数据库访问:
  用户名 密码 权限
  Mary xxx 对legacy库的所有数据有选择操作权限
  Legacy xxx 对legacy库的所有数据有选择、插入、更新、删除操作权限
  Report xxx 对legacy库的所有数据有选择操作权限

[root@server0 ~]# yum groupinstall mariadb mariadb-server.x86_64 -y

[root@server0 ~]# systemctl restart mariadb
[root@server0 ~]# systemctl enable mariadb.service [root@server0 ~]# mysql_secure_installation 安装数据库 Set root password? [Y/n] Y ### 设置 root 密码为 redhat
New password: root
Disallow root login remotely? [Y/n] Y ### 禁止远程访问 [root@server0 ~]# wget http://content.example.com/courses/rhce/rhel7.0/materials/mariadb/mariadb.dump [root@server0 ~]# mysql -uroot -proot
[root@server0 ~]# mysql -u root -p
Enter password: MariaDB [(none)]> create database legacy;
MariaDB [(none)]> show databases; MariaDB [(none)]> use legacy;
MariaDB [legacy]> show tables;
MariaDB [legacy]> source /root/mariadb.dump 逻辑备份还原,导入式
MariaDB [legacy]> show tables; MariaDB [legacy]> grant select on legacy.* to mary@localhost identified by 'marry_password';
选择权限 对legacy下的所有表 mary本地用户 密码认证为root
MariaDB [legacy]> grant select on legacy.* to report@localhost identified by 'report_password';
MariaDB [legacy]> grant select,insert,update,delete on legacy.* to legacy@localhost identified by 'legacy_password'; MariaDB [legacy]> exit

  

MariaDB [mysql]> create database legacy;

MariaDB [legacy]> create table stu (name varchar(20),age int(10),salary int(10),job varchar(10) );

MariaDB [legacy]> insert into stu values('alex',33,10000,'teacher');   增

MariaDB [legacy]> select name from stu where age=33;   查

MariaDB [legacy]> update  stu set name='snow' where job="it";   改

MariaDB [legacy]> delete from stu where age=33;  删

MariaDB [legacy]> drop table stu;

  

22、数据查询填空

在server0上登陆数据库,查看XXX库进行查询,并将结果填入相应的框格中。
  Q1在product表中,查询RT-AC68U的产品id()
  Q2查询类别为Servers的产品的数量()
模拟考环境请在http://classroom.example.com/cgi-bin/mariadb提交

[root@server0 ~]# mysql -u root -p
MariaDB [(none)]> show databases;
MariaDB [(none)]> use legacy
MariaDB [legacy]> show tables; MariaDB [legacy]> select * from product;
MariaDB [legacy]> select * from category;
MariaDB [legacy]> select * from manufacturer; MariaDB [legacy]> desc product; MariaDB [legacy]> select id from product where name='RT-AC68U';
+----+
| id |
+----+
| 3 |
+----+ MariaDB [legacy]> select * from category,product where category.name='Servers' and category.id=product.id_category;
+----+---------+----+-------------------+---------+-------+-------------+-----------------+
| id | name | id | name | price | stock | id_category | id_manufacturer |
+----+---------+----+-------------------+---------+-------+-------------+-----------------+
| 2 | Servers | 1 | ThinkServer TS140 | 539.88 | 20 | 2 | 4 |
| 2 | Servers | 2 | ThinkServer RD630 | 2379.14 | 20 | 2 | 4 |
+----+---------+----+-------------------+---------+-------+-------------+-----------------+ MariaDB [legacy]> select product.id from category,product where category.name='Servers' and category.id=product.id_category;
+----+
| id |
+----+
| 1 |
| 2 |
+----+ MariaDB [legacy]> select count(product.id) from category,product where category.name='Servers' and category.id=product.id_category; MariaDB [legacy]> exit
[root@server0 ~]# firefox http://classroom.example.com/cgi-bin/mariadb  

  

day6 RHCE的更多相关文章

  1. Python之路,Day6 - Python基础6

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  2. day6

    开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568 ...

  3. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  4. 红帽RHEL7版本RHCE认证学习及考试经历

    RHCE是红帽公司推出的Linux系统的中级认证,考试全部采取上机形式,在考察考生的基础理论知识的同时还能考察实践动手操作能力,在Linux领域的价值是不可否认的,所以对于期望从事相关行业的同学们在上 ...

  5. 【转】RHCE 7系列—RHCE考试

    本篇主要以RHCE练习题为线索,介绍其中涉及的知识点. 红色引用的字为题目要求(不是正式题目,难度略低于正式题目) In serverX or desktopX 1. (lab teambridge ...

  6. 团队项目——站立会议DAY6

    团队项目--站立会议 DAY6        团队成员介绍(5人):张靖颜.何玥.钟灵毓秀.赵莹.王梓萱        今日(2016/5/13),站立会议已进行了一周时间,大家将这一周所遇到的问题和 ...

  7. RHCE 系列(二):如何进行包过滤、网络地址转换和设置内核运行时参数

    正如第一部分(“设置静态网络路由”)提到的,在这篇文章(RHCE 系列第二部分),我们首先介绍红帽企业版 Linux 7(RHEL)中包过滤和网络地址转换(NAT)的原理,然后再介绍在某些条件发生变化 ...

  8. RHCE 系列(一):如何设置和测试静态网络路由

    RHCE(Red Hat Certified Engineer,红帽认证工程师)是红帽公司的一个认证,红帽向企业社区贡献开源操作系统和软件,同时它还给公司提供训练.支持和咨询服务. 这个 RHCE 是 ...

  9. pytho day6 <正则表达式、常用模块、反射>

    本节介绍: 一:正则表达式: 正则表达并不是python 独有的.在各个语言里都有该语法的介绍.正则表达是处理字符串的强大的处理工具.拥有自己的独特的 处理方法.和处理引擎.虽然性能没有python ...

随机推荐

  1. [19/04/20-星期六] Java的动态性_字节码操作(Javassist类库(jar包),assist:帮助、援助)

    一.概念 [基本] /** * */ package cn.sxt.jvm; import javassist.ClassPool; import javassist.CtClass; import ...

  2. python过滤文件中特殊标签

    Beautiful Soup Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的导航( ...

  3. Jpa条件查询组合查询and 和 or同时用

    条件查询,各个条件之间是and并且&&关系,其中地理信息省市区县,例如河北省,要包括其下属所有城市,每个城市包括下属区县,只选择河北省时候,要查询的是河北省所有的,他们之间是or 或者 ...

  4. vim使用四个空格代替TAB键

    让VIM可以在你写程序的时候自动缩进,并用4个空格代替TAB键. 编辑 ~/.vimrc 保存这四行: “set smartindent”, “set tabstop=4”, “set shiftwi ...

  5. linux 下线程错误查找,与线程分析命令

    一. 使用top和jstack查找线程错误 我们使用jdk自带的jstack来分析.当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1.top查找出哪个进程消耗的cpu ...

  6. Gradle Goodness: Excluding Tasks for Execution

    In Gradle we can create dependencies between tasks. But we can also exclude certain tasks from those ...

  7. 在VSCode使用Markdown绘制UML图

    在VSCode使用Markdown绘制UML图 需要插件 Markdown All in One Markdown Preview Enhanced PlantUML markdownlint Mar ...

  8. jQuery之scroll用法实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. python-基础小游戏,人在 江湖飘,哪能不挨刀,我几刀砍死你

    #人在 江湖飘,哪能不挨刀,我几刀砍死你 #规则:5赢4. 4赢3 .3赢2. 2赢1 . 1赢5 #提示:绝对值函数abs #假设:老王和老李 import random import time p ...

  10. python 输入一个字符,是小写转换为大写,大写转换为小写,其他字符原样输出

    s = input('请输入一个字符:') if 'a' <= s <= 'z': print(chr(ord(s) - 32)) elif 'A' <= s <= 'Z': ...