zoukankan      html  css  js  c++  java
  • 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  

      

  • 相关阅读:
    1.27
    1.25
    Representation Learning with Contrastive Predictive Coding
    Learning a Similarity Metric Discriminatively, with Application to Face Verification
    噪声对比估计(负样本采样)
    Certified Adversarial Robustness via Randomized Smoothing
    Certified Robustness to Adversarial Examples with Differential Privacy
    Dynamic Routing Between Capsules
    Defending Adversarial Attacks by Correcting logits
    Visualizing Data using t-SNE
  • 原文地址:https://www.cnblogs.com/venicid/p/7695280.html
Copyright © 2011-2022 走看看