• 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  

      

  • 相关阅读:
    Thinking in Java 第十六章学习笔记----数组
    Thinking in Java第十五章学习笔记----泛型
    Thinking in Java第十四章学习笔记----类型信息
    Thinking in Java第十三章学习笔记----字符串
    Kaggle竞赛--Titanic:Machine Learning from Disaster
    sklearn 常用算法参数设置与选择
    Pandas 入门知识
    机器学习常用数据集
    感知机PLA
    决策树CART--原理与实现
  • 原文地址:https://www.cnblogs.com/venicid/p/7695280.html
Copyright © 2020-2023  润新知