day6 RHCE

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  

  

原文地址:https://www.cnblogs.com/venicid/p/7695280.html