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. Mac下的mongodb安装

    mac下的mongodb安装主要有两种方式,一是手工安装,需在官网下载源文件,二是通过homebrew,至于homebrew不做介绍.既然是Mac系统下,我认为直接通过homebrew安装最好,省事还 ...

  2. Mysql 创建普通用户、数据库、表、插入记录,用户赋权

    C:\phpStudy\MySQL\bin>mysql -uroot -proot -h127.0.0.1 //创建用户 mysql> insert into mysql.user (ho ...

  3. VC++ UDP网络控制台程序

     采用的是VC2008,控制台应用程序,使用UDP编写. 1.服务端代码 //UDPServer.cpp #include <WinSock2.h> #include <stdio. ...

  4. PHP导出excel表格

    <?php header('Content-Type: application/force-download'); header("Content-type: text/html; c ...

  5. sofar:机器学习检测十题

    http://sofasofa.io/forum_main_post.php?postid=1001084 http://sofasofa.io/forum_main_post.php?postid= ...

  6. UVALive - 6837 Kruskal+一点性质(暴力枚举)

    ICPC (Isles of Coral Park City) consist of several beautiful islands. The citizens requested constru ...

  7. 使用Docker遇到的基本命令及问题小结

    当遇到Cannot connect to the Docker daemon. Is the docker daemon running on this host?导致Docker无法启动时,重启Do ...

  8. #ifdef 和 #if defined的区别

    #ifdef 和 #if defined的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB)xxxxxxxxx#endi ...

  9. C# 缓存工厂类

    描 述:缓存工厂类 /// <summary> /// 描 述:缓存工厂类 /// </summary> public class CacheFactory { /// < ...

  10. Caused by: java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedPropertyResolver

    Caused by: java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedPropertyResolver 这 ...