• 第五周


    1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,“etc-年-月-日-时-分.tar.gz”

    [root@etcd03 backup]# crontab -l
    0 */12 * * * tar -czvf /backup/etc-`date +%Y-%m-%d-%H-%M.tar.gz` /etc
    
    

    2、rpm包管理功能总结以及实例应用演示。

    rpm命令:rpm [OPTIONS] [PACKAGE_FILE]

    安装:-i, --install
       -v:verbose,详细信息
       -vv:更详细的输出
       -h:hash marks输出进度条;每个#表示2%的进度;
       --test:测试安装,检查并报告依赖关系及冲突消息等;
       --nodeps:忽略依赖关系;不建议;
       --replacepkgs:重新安装
       --nosignature:不检查包签名信息,不检查来源合法性;
       --nodigest:不检查包完整性信息;
       --noscripts:不带脚本信息

    升级:-U, --update, 升级或安装
       -F, --freshen 纯粹升级,必须存在老版本,不支持安装操作
       --oldpackage:降级;
       --force:强制升级;
    卸载:-e, --erase
       --allmatches:卸载所有匹配指定名称的程序包的各版本;
       --nodeps:忽略依赖关系
       --test:测试卸载,dry run模式
    查询:-q, --query
       -qi PACKAGE --info:查询程序包相关的信息,版本号、大小、所属的包组等
       -qf FILE   查询指定的文件由哪个程序包安装生成
       -qc PACKAGE  --configfiles:查询指定的程序包提供的配置文件
       -ql PACKAGE  --list:查询程序安装生成的所有文件列表
       -qd PACKAGE   --docfiles:查询指定的程序包提供的文档
       -qR PACKAGE   --requires: 查询指定的程序包的依赖关系
       -qpi PACKAGE_FILE  查询未安装的程序包的相关信息
       -qpl PACKAGE_FILE   查询未安装的程序若安装生成的所有文件列表
       -qpc PACKAGE_FILE  查询未安装的程序若安装生成的所有文件列表
       -q --changelog: 查询rpm包的changlog

    [root@zabbix-mysql ~]# rpm -ql mariadb
    /etc/my.cnf.d/client.cnf
    /usr/bin/aria_chk
    /usr/bin/aria_dump_log
    /usr/bin/aria_ftdump
    /usr/bin/aria_pack
    /usr/bin/aria_read_log
    /usr/bin/msql2mysql
    /usr/bin/my_print_defaults
    /usr/bin/mysql
    /usr/bin/mysql_find_rows
    /usr/bin/mysql_waitpid
    /usr/bin/mysqlaccess
    /usr/bin/mysqladmin
    /usr/bin/mysqlbinlog
    /usr/bin/mysqlcheck
    /usr/bin/mysqldump
    /usr/bin/mysqlimport
    /usr/bin/mysqlshow
    /usr/bin/mysqlslap
    /usr/share/doc/mariadb-5.5.56
    /usr/share/doc/mariadb-5.5.56/COPYING
    /usr/share/doc/mariadb-5.5.56/COPYING.Google
    /usr/share/doc/mariadb-5.5.56/COPYING.Percona
    /usr/share/doc/mariadb-5.5.56/README
    /usr/share/doc/mariadb-5.5.56/README.mysql-docs
    /usr/share/doc/mariadb-5.5.56/README.mysql-license
    /usr/share/man/man1/aria_chk.1.gz
    /usr/share/man/man1/aria_dump_log.1.gz
    /usr/share/man/man1/aria_ftdump.1.gz
    /usr/share/man/man1/aria_pack.1.gz
    /usr/share/man/man1/aria_read_log.1.gz
    /usr/share/man/man1/my_print_defaults.1.gz
    /usr/share/man/man1/mysql.1.gz
    /usr/share/man/man1/mysql_find_rows.1.gz
    /usr/share/man/man1/mysql_waitpid.1.gz
    /usr/share/man/man1/mysqlaccess.1.gz
    /usr/share/man/man1/mysqladmin.1.gz
    /usr/share/man/man1/mysqldump.1.gz
    /usr/share/man/man1/mysqlshow.1.gz
    /usr/share/man/man1/mysqlslap.1.gz
    
    [root@zabbix-mysql ~]# rpm -qi mariadb
    Name        : mariadb
    Epoch       : 1
    Version     : 5.5.56
    Release     : 2.el7
    Architecture: x86_64
    Install Date: Wed 21 Nov 2018 08:25:42 PM CST
    Group       : Applications/Databases
    Size        : 50858223
    License     : GPLv2 with exceptions and LGPLv2 and BSD
    Signature   : RSA/SHA256, Fri 11 Aug 2017 02:17:53 AM CST, Key ID 24c6a8a7f4a80eb5
    Source RPM  : mariadb-5.5.56-2.el7.src.rpm
    Build Date  : Sat 05 Aug 2017 05:01:21 AM CST
    Build Host  : c1bm.rdu2.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://mariadb.org
    Summary     : A community developed branch of MySQL
    Description :
    MariaDB is a community developed branch of MySQL.
    MariaDB is a multi-user, multi-threaded SQL database server.
    It is a client/server implementation consisting of a server daemon (mysqld)
    and many different client programs and libraries. The base package
    contains the standard MariaDB/MySQL client programs and generic MySQL files.
    
    

    3、yum的配置和使用总结以及yum私有仓库的创建。

    YUM: Yellowdog Update Modifier,完成RHEL系列前端自动解决依赖关系安装工具,依赖rpm存在。

    YUM配置文件路径

    /etc/yum.conf:为所有yum仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置
    

    /etc/yum.conf 主配置定义

    [root@zabbix-mysql ~]# cat /etc/yum.conf
    [main]		# 通用主配置段
    cachedir=/var/cache/yum/x86_64/$releasever		# 缓存文件文件路径
    keepcache=1		# 缓存到本地的文件是否保存 
    debuglevel=2	# 调试级别	 
    logfile=/var/log/yum.log	# 安装的日志文件
    exactarch=1		# 精确严格的平台 release 匹配
    obsoletes=1
    gpgcheck=1		# 检测来源合法性和完整性
    plugins=1		# 支持插件机制
    installonly_limit=5		同时安装多少程序包
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release		#当前发行版本号从哪儿获取
    
    [root@zabbix-mysql ~]# ll /var/cache/yum/x86_64/7
    total 28
    drwxr-xr-x 4 root root 4096 May 21 23:09 aliyun
    drwxr-xr-x 4 root root 4096 Nov 21 18:50 base
    drwxr-xr-x 4 root root 4096 Apr 16  2018 centos7-yum
    drwxr-xr-x 4 root root 4096 Nov 21 18:50 extras
    drwxr-xr-x 4 root root  132 Nov 20  2018 mysql57-community
    drwxr-xr-x 4 root root  132 Nov 20  2018 mysql-connectors-community
    drwxr-xr-x 4 root root  132 Nov 20  2018 mysql-tools-community
    -rw-r--r-- 1 root root  183 May 21 23:09 timedhosts
    -rw-r--r-- 1 root root    0 May 21 23:09 timedhosts.txt
    drwxr-xr-x 4 root root 4096 Nov 21 18:50 updates
    drwxr-xr-x 4 root root 4096 Nov 22 18:16 zabbix
    drwxr-xr-x 4 root root   73 Nov 22 18:16 zabbix-non-supported
    
    [root@zabbix-mysql ~]# tail /var/log/yum.log
    Feb 14 17:33:08 Installed: apr-util-1.5.2-6.el7.x86_64
    Feb 14 17:33:08 Installed: httpd-tools-2.4.6-88.el7.centos.x86_64
    Mar 28 09:52:05 Installed: 2:nmap-ncat-6.40-16.el7.x86_64
    Apr 08 10:55:19 Installed: libcgroup-0.41-20.el7.x86_64
    Apr 08 10:55:19 Installed: libcgroup-tools-0.41-20.el7.x86_64
    Apr 08 16:00:21 Updated: 14:libpcap-1.5.3-11.el7.x86_64
    Apr 08 16:00:21 Installed: 14:tcpdump-4.9.2-3.el7.x86_64
    Apr 28 21:52:15 Installed: iotop-0.6-4.el7.noarch
    May 08 18:03:45 Installed: sysstat-10.1.5-17.el7.x86_64
    May 21 23:09:34 Installed: 2:nmap-6.40-16.el7.x86_64
    
    

    yum仓库(*.repo)配置文件定义

    [root@zabbix-mysql yum.repos.d]# cat aliyun.repo
    [aliyun]		# 仓库ID
    name=aliyun		
    baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64	# yum 仓库指定的访问路径(阿里源)
    enabled=1	# 启用此仓库
    gpgcheck=0	# 检查完整性和来源合法性
    

    YUM 常用命令

    • yum repolist 显示仓库列表
    • yum list 显示程序包
    • yum search 模糊查找程序包
    • yum install 安装程序包
    • yum remove 卸载程序包
    • yum update [package1] [package2] [...] 升级操作
    • yum downgrade package1 [package2] [...] 降级操作
    • yum info [package1] [package2] [...] 查看程序包简要信息
    • yum provides | whatprovides feature1 [feature2] [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供
    • yum clean <packages | metadata | expire-cache | rpmdb | plugins | all > 清理本地缓存
    // 查看yum仓库
    [root@zabbix-mysql yum.repos.d]# yum repolist
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    repo id                                                repo name                                             status
    !aliyun                                                aliyun                                                10,019
    repolist: 10,019
    
    // 模糊查询安装包
    [root@zabbix-mysql yum.repos.d]# yum search ftp
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    ================================================ N/S matched: ftp =================================================
    ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
    lftp-scripts.noarch : Scripts for lftp
    syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting
    tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
    tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
    vsftpd.x86_64 : Very Secure Ftp Daemon
    vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon
    curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)
    lftp.i686 : A sophisticated file transfer program
    lftp.x86_64 : A sophisticated file transfer program
    wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
    
      Name and summary matches only, use "search all" for everything.
    
    // 查询已安装与未安装的匹配我包
    [root@zabbix-mysql yum.repos.d]# yum list *ftp*
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Installed Packages
    ftp.x86_64                                               0.17-67.el7                                   @centos7-yum
    Available Packages
    lftp.i686                                                4.4.8-11.el7                                  aliyun
    lftp.x86_64                                              4.4.8-11.el7                                  aliyun
    lftp-scripts.noarch                                      4.4.8-11.el7                                  aliyun
    syslinux-tftpboot.noarch                                 4.05-15.el7                                   aliyun
    tftp.x86_64                                              5.2-22.el7                                    aliyun
    tftp-server.x86_64                                       5.2-22.el7                                    aliyun
    vsftpd.x86_64                                            3.0.2-25.el7                                  aliyun
    vsftpd-sysvinit.x86_64                                   3.0.2-25.el7                                  aliyun
    
    

    创建私有 yum 仓库

    • 第一种:使用发行光盘作为yum仓库

      • 挂载光盘或ISO文件到某一挂载点
      mkdir /mnt/cdrom        
      mount /dev/sr0 /mnt/cdrom
      
      • 备份原来的yum源:
      mkdir /etc/yum.repos.d/bak       
      mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/   
      
      • 增加一个光盘的yum源
      #vi /etc/yum.repos.d/mybase.repo        
      [mybase]        
      name=LocalYum        
      baseurl=file:///mnt/cdrom        
      gpgcheck=0        
      enabled=1
      
    • 第二种,使用本地或网络rpm包手动创建

      • 第一步:安装createrepo
      • 第二步:确定repository输出方式:有两种,本地输出与网络输出。
        本地输出:提供一个放置rpm包的本地路径
        网络输出 :提供一个文件服务器,配置好ftp服务或http服务(注意防火墙要开放对应端口)

      ​ ftp服务:

      ​ 安装程序包:vsftpd

      ​ 文件存放路径:/var/ftp/pub

        		 启动服务:service vsftpd start
      
        http服务:
      

      ​ 安装程序包:httpd

      ​ 文件存放路径:/var/ftp/pub

      ​ 启动服务:service httpd start

      • 第三步:把rpm 程序包文件放入准备好的目录中,可以从光盘复制rpm 包过去。
      • 第四步:对此目录运行 createrepo 命令即可,到此就完成了本地仓库的创建。
      • 测试所创建的yum 仓库是否可用
    • 在/etc/yum.repos.d/ 目录下创建一个以repo结尾的文件,示例如下:

    [root@localhost yum.repos.d]# yum info createrepo	//查看已安装的createrepo信息
    [root@localhost yum.repos.d]# mkdir -p /yumtest/Packages    
    [root@localhost yum.repos.d]# cp /media/cdrom/Packages/* /yumtest/Packages/     //下载所需要的所有文件到本地某个路径
    [root@localhost yum.repos.d]# createrepo /yumtest/   //创建关联关系,完成后生成repodata
    root@localhost yum.repos.d]# cat Local.repo    //配置yum源文件
    [Local]
    name=Local Yum
    baseurl=file:///yumtest/
    #baseurl=http://<repo_host>/Packages     //当为http网络输出时,用此配置。<repo_host>仓库主机IP,Packages为http发布目录下的软件包目录
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    enabled=1
    
    [root@localhost yum.repos.d]# yum repolist       //查看配置好的yum仓库
    

    4、写一个脚本实现列出以下菜单给用户:

    (1)disk:show disk info信息

    (2)mem: show memory info信息

    (3)cpu: show cpu info信息

    (*)quit

    [root@etcd03 tmp]# cat test1.sh
    #!/bin/bash
    read -p "Your choice:" choice
    case $choice in
    disk)
            fdisk -l;;
    mem)
            cat /proc/meminfo;;
    cpu)
            lscpu;;
    *)
            exit;;
    esac
    

    5、sed用法总结并结合实例演示

    • 常用选项
    -n:不输出模式空间中的内容至屏幕;
    -e script, --expression=script:多点编辑;
    -f  /PATH/TO/SED_SCRIPT_FILE   : 每行一个编辑命令;
    -r, --regexp-extended:支持使用扩展正则表达式;
    -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
    
    • 地址定界
    1)空地址:什么都不填写时,表示对全文进行处理
    2)单地址
         #:表示对指定的行
       /pattern/:被此模式所匹配到的每一行,其中模式两边的/不能省略
    
    • 地址范围(#表示任意数字)
    #,#:从某行到某行,第二个#大于第一个#
    #,+#:从某行开始加多商行
    #,/pattern1/:从某行开始到第一次配到模式的行
    /pattern1/,/pattern2/:从第一次匹配到的模式1到第二次匹配到哦的模式2
    
    步进:~,#~#   从第几行
    1~2:所有奇数行。从第一行开始,每次加两行读取
    2~2:所有偶数行。从第二行开始,每次加两行读取
    
    • 编辑命令
    d:         删除;
    p:         显示模式空间中的内容;
    a  	ext:  在行后面追加文本“text”,支持使用
    实现多行追加;
    i  	ext:  在行前面插入文本“text”,支持使用
    实现多行插入;
    c  	ext:  把匹配到的行替换为此处指定的文本“text”;
    w /PATH/TO/SOMEFILE:     保存模式空间匹配到的行至指定的文件中;
    r  /PATH/FROM/SOMEFILE:  读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
    =:         为模式匹配到的行打印行号;
    !:         条件取反;
    s///:      查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
                替换标记:
                g:全局替换;
                w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
                p:显示替换成功的行;
    
    • 字符串替换匹配模式
    #替换/etc/passwd中的:分割符为- UID:字符
    cat /etc/passwd | cut -d : -f1,3 | sed 's/:/ - UID: /'
    root - UID: 0
    bin - UID: 1
    
    • 直接修改后的数据替换原始文件
    sed -i 's/text/replace/g' file
    
    #/3g标记替换第3次出现后的匹配:
    echo "thisthisthisthisthis" | sed 's/this/THIS/3g'
    thisthisTHISTHISTHIS
    
    • 已匹配字符串标记 &
    #通过正则表达式w+匹配每一个单词,然后用[&]替换它。&对应于之前所匹配到的单词。
    echo "this is an example" | sed 's/w+/[&]/g'
    [this] [is] [an] [example]
    
    • 子串匹配标记 (1)
    echo "sever EIGHT" | sed 's/([a-z]+) ([A-Z]+)/2 1/g'
    EIGHT sever
    

    6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序

    #!/bin/bash
    nginx_log='/usr/local/nginx/logs/host.access.log'
    code_400_count=$(awk '($9 >= 400) {print $1}' ${nginx_log} | sort -rn | uniq -c)
    echo $code_400_count
    
    

    7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包

    关闭其它非自制yum源,设置*.repo文件中相应的enabled=0

    yum install -y ftp --enablerepo=Local Yum
    yum install -y openssh --enablerepo=Local Yum
    yum install -y curl --enablerepo=Local Yum
    yum install -y wget --enablerepo=Local Yum
    yum install -y tcpdump --enablerepo=Local Yum
    
  • 相关阅读:
    C++ | 变量缩写
    C++_数据类型和操作
    Python_pandas处理数据格式和统计频次
    C++_分离编译与Cmake
    C++_输入和输出示例
    C++字符串分割
    Pytorch_yoloV5预测数据非结构数据结构化
    Pytorch_模型部署和推断
    mysql触发器
    【分布式ID】雪花、TDDLSEQUENCE、UUID
  • 原文地址:https://www.cnblogs.com/linux-timke/p/10923070.html
Copyright © 2020-2023  润新知