软件包前端和后端工具使用及周期计划任务Sed命令总结

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

~]# mkdir /backup

~]# vim /root/backup.sh

        tar zcf /backup/etc-`date +%F-%H-%M`.tar.gz /etc/*

~]# crontab -e

0 /12 * * * /usr/bin/bash /root/backup.sh

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

程序包管理器rpm --- >> redhat:redhat package manager 现更名为递归缩写:rpm is package manager

rpm把目标二进制格式(二进制程序、库文件、配置文件、帮助文件)组织成为一个或有限几个“包”文件来,从而更方便地实现程序包安装、升级、卸载、查询、校验。

每一个程序包都有程序包的组成清单,包括文件清单和安装卸载时所要执行的脚本。并且对这些信息记录放置在公共数据库中,数据库信息还包括程序包的名称和版本、依赖关系、功能说明、安装生成的各文件的文件路径及校验码信息等。数据库目录位于/var/lib/rpm/文件夹下。

CentOS系统和RedHat系统上rpm命令管理程序包的方式有以下这些内容

安装、升级、卸载、查询和校验、数据库维护

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]

安装:-i, --install

升级:-U, --update,有则升级,没有就安装 -F, --freshen 只升级

卸载:-e, --erase

查询:-q, --query

校验:-V, --verify

数据库维护:--builddb, --initdb 初始化

安装:

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

rpm  -ivh  PACKAGE_FILE ...

[root@7df49b28e751 ~]# rpm -ivh --nodeps perl-Tk-804.030-6.el7.x86_64.rpm Preparing... ################################# [100%]Updating / installing... 1:perl-Tk-804.030-6.el7 ################################# [100%]

常规选项: -v:verbose,详细信息  -vv:更详细的输出

[install-options]:

-h:hash marks输出进度条;每个#表示2%的进度;

--test:测试安装,检查并报告依赖关系及冲突消息等,并不直接安装;

--nodeps:忽略依赖关系,不建议,能装但一定能使用。

--replacepkgs:重新安装

rpm可以自带脚本:共四类:--noscripts 不执行脚本

preinstall:安装过程开始之前运行的脚本,%pre , --nopre

postinstall:安装过程完成之后运行的脚本,%post , --nopost

preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun

postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun

--nosignature:不检查包签名信息,不检查来源合法性

--nodigest:不检查包完整性信息

升级:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

[root@7df49b28e751 ~]# rpm -Uvh perl-Tk-804.030-6.el7.x86_64.rpm

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-U:升级或安装

-F:升级

rpm  -Uvh PACKAGE_FILE ...

rpm  -Fvh PACKAGE_FILE ...

--oldpackage:降级

--force:强制升级

卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

[root@7df49b28e751 ~]# rpm -e perl-Tk

--allmatches:卸载所有匹配指定名称的程序包的各版本;

--nodeps:忽略依赖关系

--test:测试卸载,dry run干跑模式

查询:

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

[select-options]

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本

-a, --all:查询所有已经安装过的包

-f  FILE:查询指定的文件由哪个程序包安装生成

-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作,需结合[query-options]使用。

[root@7df49b28e751 ~]# rpm -pqi perl-Tk-804.030-6.el7.x86_64.rpm

使用方法组合 -qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc 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

校验:

rpm {-V|--verify} [select-options] [verify-options]

~]# rpm -qf /etc/fstab

setup-2.8.71-9.el7.noarch

~]# rpm -V setup-2.8.71-9.el7.noarch

S.5....T. c /etc/bashrc

S.5....T. c /etc/profile

S.5....T. c /etc/securetty

c:只有文件是一个配置文件时才会有此标志,可以用这种方法快速定位rpm包的配置文件安装位置。

S:表示对应文件的大小(Size)不一致;

M:表示对于文件的mode不一致;

5:表示对应文件的MD5不一致;

D:表示文件的major和minor号不一致;

L:表示文件的符号连接内容不一致;

U:表示文件的owner不一致;

G:表示文件的group不一致;

T:表示文件的修改时间不一致;

P capabilities differ : 提供能力不一致

包来源合法性验正和完整性验正:

来源合法性验正:

完整性验正:

获取并导入信任的包制作者的密钥:

对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验正:

(1) 安装此组织签名的程序时,会自动执行验正;

(2) 手动验正:rpm -K PACKAGE_FILE

数据库重建:

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

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] 

[--dbpath DIRECTORY] :指明建立位置

--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;

--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

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

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

仓库指向的定义:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选;

cost= 开销默认为1000

yum命令的用法: yum [options] [command] [package ...]

yum的命令行选项:[options]

--nogpgcheck:禁止进行gpg check;

-y: 自动回答为“yes”;

-q:静默模式;

--disablerepo=repoidglob:临时禁用此处指定的repo;

--enablerepo=repoidglob:临时启用此处指定的repo;

--noplugins:禁用所有插件;

显示仓库列表:

    repolist [all|enabled|disabled]

    显示程序包:

    list

    # yum list [all | glob_exp1] [glob_exp2] [...]

    # yum list {available|installed|updates} [glob_exp1] [...]

    安装程序包:

    install package1 [package2] [...]

    reinstall package1 [package2] [...]  (重新安装)

    升级程序包:

    update [package1] [package2] [...]

    downgrade package1 [package2] [...] (降级)

    检查可用升级:

    check-update

    卸载程序包:

    remove | erase package1 [package2] [...]

    查看程序包information:

    info [...]

    查看指定的特性(可以是某文件)是由哪个程序包所提供:

    provides | whatprovides feature1 [feature2] [...]

    清理本地缓存:

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

    构建缓存:

    makecache

    搜索:

    search string1 [string2] [...]

    以指定的关键字搜索程序包名及summary信息;

    查看指定包所依赖的capabilities:

    deplist package1 [package2] [...]

    查看yum事务历史:

    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    包组管理的相关命令:

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]


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

(1)disk:show disk info信息

(2)mem: show memory info信息

(3)cpu: show cpu info信息

(*)quit


软件包前端和后端工具使用及周期计划任务Sed命令总结_第1张图片

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

sed:Stream EDitor 流编辑器逐行对文件进行编辑,基本功能通过模式空间,高级功能需要配合保存空间完成。

sed [OPTION]... 'script' [input-file] ...

script:地址定界编辑命令

常用选项:

-n:不输出模式空间中的内容至屏幕;

-e script, --expression=script:多点编辑;

-f  /PATH/TO/SED_SCRIPT_FILE 把多点编辑指令写在一个指定文件中

-r, --regexp-extended:支持使用扩展正则表达式;

-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件不可撤销 ;

多点编辑把井号开头后面任意多个空格删除并删除以UUID开头的行

~]# sed  -e  's@^#[[:space:]]*@@'  -e  '/^UUID/d'  /etc/fstab

地址定界:

(1) 空地址:对全文进行处理;

(2) 单地址 #:指定行;

/pattern/:被此模式所匹配到的每一行;

(3) 地址范围

#,#:

#,+#:

#,/pat1/

/pat1/,/pat2/ 从匹配模式1到匹配模式2之间

$:最后一行;

(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:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;

~]# sed  's@^[[:space:]]\+@@' /etc/grub2.cfg

练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;

~]# sed  's@^#[[:space:]]*@@'  /etc/fstab

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

~]# echo "/var/log/messages" | sed -r 's@[^/]+/?$@@'

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

~]# grep -o '[4|5][0-9][0-9]' /var/log/nginx/access.log |sort | uniq -c

软件包前端和后端工具使用及周期计划任务Sed命令总结_第2张图片

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

在根目录下新建目录/repo/packages。

从光盘中复制相应的rpm包到acakges目录。

执行命令createrepo -u /repo/rackages /repo   

编辑文件/etc/yum.repos.d/myrepo.repo

[repo]

name=newrepo

baseurl=file:///repo

enabled=1

gpgcheck=0

你可能感兴趣的:(软件包前端和后端工具使用及周期计划任务Sed命令总结)