首页 > 其他 > 详细

week 6

时间:2018-12-17 01:59:32      阅读:172      评论:0      收藏:0      [点我收藏+]
1.每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"
tar zcfP /backup/$(date +%F-%H-%M).tar.gz /etc/

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

rpm命令按照用途可以分为 安装、升级、卸载、查询、校验、数据库维护六个区块,

rpm命令:rpm  [OPTIONS][PACKAGE_FILE]
    安装:-i, --install
    升级:-U, --update, -F, --freshen
    卸载:-e, --erase
    查询:-q, --query
    校验:-V, --verify
    数据库维护:--builddb, --initdb

1) 安装

rpm {-i|--install} [install-options] PACKAGE_FILE ...

    rpm  -ivh  PACKAGE_FILE ...
        GENERAL OPTIONS:
        -v:verbose,详细信息
        -vv:更详细的输出

        [install-options]:
        -h:hash marks输出进度条;每个#表示2%的进度;
        --test:测试安装,检查并报告依赖关系及冲突消息等;
        --nodeps:忽略依赖关系;不建议;
        --replacepkgs:重新安装
        --nosignature:不检查包签名信息,不检查来源合法性;
        --nodigest:不检查包完整性信息;
        # rpm -i example.rpm 安装example.rpm包;
        # rpm -iv example.rpm 安装example.rpm包并在安装过程中显示正在安装的信息;
        # rpm -ivh example.rpm 安装example.rpm包并在安装过程中显示正在安装的信息及安装进度;

2)升级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    --oldpackage: 降级;
    --force: 强制升级;

# rpm -Uvh example.rpm 升级example.rpm包

注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
     (2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

3)卸载

rpm {-e|--erase} [--allmatches][--nodeps] [--noscripts][--test] PACKAGE_NAME ...
    --allmatches:卸载所有匹配指定名称的程序包的各版本;
    --nodeps:忽略依赖关系
    --test:测试卸载,dry run模式

# rpm -e example  卸载软件example,注意:只输入软件包名即可,而不是文件名

4)查询

rpm {-q|--query} [select-options] [query-options]

    [select-options]
        PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
        -a, --all:查询所有已经安装过的包;
        -f  FILE:查询指定的文件由哪个程序包安装生成;
        -p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
        --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
        --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

    [query-options]
        --changelog:查询rpm包的changlog;
        -l, --list:程序安装生成的所有文件列表;
        -i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
        -c, --configfiles:查询指定的程序包提供的配置文件;
        -d, --docfiles:查询指定的程序包提供的文档;
        --provides:列出指定的程序包提供的所有的CAPABILITY;
        -R, --requires:查询指定的程序包的依赖关系;
        --scripts:查看程序包自带的脚本片断;
    用法:
        -qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
        -qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ... 

#rpm -q example 查询example软件包

5)校验软件包

rpm {-V|--verify} [select-options] [verify-options] 
rpm -V pkg 校验软件包

6)数据库重建

通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;有时rpm 系统出了问题,不能安装和查询,可能会是数据库出现问题,可以使用下面命令重建

rpm管理器数据库路径:/var/lib/rpm/
    查询操作:通过此处的数据库进行;

获取帮助:
    CentOS 6:man rpm
    CentOS 7:man rpmdb  

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
    --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
    --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

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

yum(yellow dog, Yellowdog Update Modifier)程序包管理器的前端工具,是一个在Fedora、RedHat、SUSE中的前端软件包管理器。基于rpm包管理,能够从指定服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次性安装所有依赖的软件包

客户端配置文件指定对应服务器访问方式如下几种:

ftp://
http://
nfs://
file:///

配置文件:

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

    仓库指向的定义:
    [repositoryID]
    name=repo_name                    #显示的名称
    baseurl=url://path/to/repository/   #路径可以是网络上的也可以是本地访问路径
    enabled={1|0}                     #是否启用包来源合法性验证
    gpgcheck={1|0}                    #是否启用仓库
    gpgkey=URL                        #公钥文件
    enablegroups={1|0}
    failovermethod={roundrobin|priority}   默认为:roundrobin,意为随机挑选;
    cost=1000   #仓库开销,用来做优先级,数值越小,优先级越大默认为1000

yum的常用命令

yum insatll  package  安裝软件包
yum list              列出所有可用的package和package組
yum clean all         清除所有缓冲数据
yum deplist  package  列出一个包所有依赖的包
yum remove   package  卸载一个包

yum创建私有仓库

创建yum仓库:
createrepo [options] <directory>

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

(1)disk:show disk info信息

(2)mem:show memory info信息

(3)cpu:show cpu info信息

(*)quit

#!/bin/bash
cat << EOF
(1)disk:show disk info信息
(2)mem:show memory info信息
(3)cpu:show cpu info信息
(*)quit
EOF
read -p "请输入OPTION:" option
case $option in
1)
    fdisk -l /dev/[hs]d[a-z]
    ;;
2)
    free -m
    ;;
3)
    lscpu
    ;;
*)
    echo "quit"
    exit
    ;;
esac

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

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed用法格式:

sed [OPTION]...  ‘script‘  [input-file] ...
    script:地址定界编辑命令

sed常用选项:

 -n:不输出模式空间中的内容至屏幕;
 -e script, --expression=script:多点编辑;能指定多个编辑命令
 -f  /PATH/TO/SED_SCRIPT_FILE每行一个编辑命令;
 -r, --regexp-extended:支持使用扩展正则表达式;
 -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;

地址定界:

    (1) 空地址:对全文进行处理;
    (2) 单地址:
        #:指定行;
        /pattern/:被此模式所匹配到的每一行;
    (3) 地址范围
        #,#:  指定行到指定行
        #,+#: 从指定数字行加上指定数字,例如3,+8 ,从第三行开始到第十行(包括第三行)
        #,/pat1/  从指定行到第一次匹配到的pat结束
        /pat1/,/pat2/  从第一次匹配到的pat到第二次匹配到的pat
        $:最后一行;
    (4) 步进:~
        1~2:所有奇数行
        2~2:所有偶数行

编辑命令:

d:删除;
p:显示模式空间中的内容;
a  \text:在行后面追加文本“text”,支持使用\n实现多行追加; 
i  \text:在行前面插入文本“text”,支持使用\n实现多行插入; 
c  \text:把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=:为模式匹配到的行打印行号;
!:条件取反;
    地址定界!编辑命令;
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
    替换标记:
        g:全局替换;
        w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
        p:显示替换成功的行;

示例:

1) -n与p合用

查看/etc/passwd文件的1-3行

[root@www ~]# cat -n /etc/passwd|sed -n ‘1,3p‘
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin

打印/etc/passwd文件的奇数行

[root@www ~]# cat -n /etc/passwd|sed -n ‘p;n‘
     1  root:x:0:0:root:/root:/bin/bash
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    11  operator:x:11:0:operator:/root:/sbin/nologin
    13  gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    15  nobody:x:99:99:Nobody:/:/sbin/nologin
    17  vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    19  abrt:x:173:173::/etc/abrt:/sbin/nologin
    21  nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    23  ntp:x:38:38::/etc/ntp:/sbin/nologin
    25  postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    27  oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
    29  test:x:500:500::/home/test:/bin/bash

2)d删除

删除第一行

[root@www ~]# cat -n a|sed ‘1d‘
     2  Kernel \r on an \m
     3

删除/etc/fstab文件中以#开头的行

[root@www ~]# sed ‘/^#/d‘ /etc/fstab

/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=a237ccf4-03c2-44e2-aa7d-b793d08d8fef /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

取/etc/fstab最后一行

[root@www ~]# sed ‘$!d‘ /etc/fstab
proc                    /proc                   proc    defaults        0 0

3)s查找替换

替换/etc/passwd文件里root为大写ROOT

[root@www ~]# sed ‘s/root/ROOT/‘ /etc/passwd         ##默认会替换行里第1个匹配
ROOT:x:0:0:root:/root:/bin/bash
[root@www ~]# sed ‘s/root/ROOT/g‘ /etc/passwd        ##加g选项会全局替换
ROOT:x:0:0:ROOT:/ROOT:/bin/bash

输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;

echo "/var/log/messages/" | sed ‘s@[^/]\+/\?$@@‘

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

sed -n -r ‘/\<40[0-9]\>/p‘ /var/log/httpd/access_log|cut -d" " -f1 |sort|uniq -c

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

使用光盘镜像中的包模拟创建本地仓库

[root@www ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom/
[root@www ~]# mkdir -p /yumrepo/Packages            ###创建本地packages目录
###将需要的Packages拷贝到本地目录
cp /media/cdrom/Packages/ftp-0.17-67.el7.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/openssh-* /yumrepo/Packages/
cp /media/cdrom/Packages/curl-7.29.0-35.el7.centos.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/wget-1.14-13.el7.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/tcpdump-4.5.1-3.el7.x86_64.rpm /yumrepo/Packages/
###使用createrepo命令创建本地yum源(如果没有此命令可以使用yum -y install createrepo安装)

[root@www yumrepo]# createrepo /yumrepo/
Spawning worker 0 with 15 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

修改yum配置文件,将仓库指向本地源

[root@www ~]# cd /etc/yum.repos.d/
[root@www yum.repos.d]# vim local.repo
    [yumrepo]
    name=yumrepo
    baseurl=file:///yumrepo
    enabled=1
    gpgcheck=0
[root@www yum.repos.d]# yum repolist         #######查看yum仓库
已加载插件:fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.lzu.edu.cn
 * extras: mirror.lzu.edu.cn
 * updates: mirrors.cqu.edu.cn
仓库标识                                 仓库名称                                   状态
base                                     CentOS-6 - Base                         6,713
extras                                   CentOS-6 - Extras                       35
updates                                  CentOS-6 - Updates                      251
yumrepo                                  yumrepo                                 15
repolist: 7,014

安装ftp、openssh、curl、wget、tcpdump等软件包

yum install -y ftp openssh curl wget tcpdump

week 6

原文:http://blog.51cto.com/5190716/2331271

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!