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. iOS开发中的Markdown渲染

    iOS开发中的Markdown渲染 BearyChat的消息是全面支持Markdown语法的,所以在开发BearyChat的iOS客户端的时候需要处理Markdown的渲染. 主要是两套实现方案: 直 ...

  2. CCControlExtension/CCControl

    #ifndef __CCCONTROL_H__ #define __CCCONTROL_H__ #include "CCInvocation.h" #include "C ...

  3. Discuz!在线中文分词服务

    Discuz!在线中文分词服务是基于API返回分词结果的.在项目中,我们只需要一个函数即可方便地进行分词.关键词提取.以下是根据Discuz!在线分词服务API写的函数,测试可正常运行: 代码代码如下 ...

  4. linq中当生成asp.net实体模式时

    linq中当生成asp.net实体模式时 注意: 选中 工具->库程序包管理器->管理解决方案的nuget程序包  选中下面的进行下载.

  5. pyhton 自动化pymysql操作mysqldb数据库增删改查封装

    # coding=utf-8 import pymysql import os import configparser """ /* @:param: python ve ...

  6. Redis(三)内存模型

    本文转载自编程迷思,原文链接 深入学习Redis(1):Redis内存模型 前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可 ...

  7. 【luogu P1955 [NOI2015]程序自动分析】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1955 并查集操作,1e9要离散化,数组要开大一些,操作前先执行合并操作 样例好毒啊(全是排好序的) #inc ...

  8. Unity-iPhone has Conflicting Provisioning Settings

    Select the top level node called Unity-iPhone in the left tree view (the one with the blue item). Se ...

  9. iOS开发--MQTT实时处理数据

    一. MQTT 一个物联网项目中用到了MQTT协议, 可以用来做设备与软件之间的互通. MQTT: 即时通讯协议, 传输层协议 二. 常用: 1.MQTTKit(已经不维护了) 2.MQTTClien ...

  10. 【Python】01 - 常见用法随见随梳理

    1. range() 和 xrange()的区别 for x in range(5): print x for x in xrange(5): print x 这么看,range和xrange返回的值 ...