1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"
- crontab表达方式
* * * * *
从前到后分别表示分 时 日 月 周
*/2
表示每2(分钟、小时 *所代表的要能被2整除) - date表达方式
%Y
年份(例如2019)
%m
月份(01..12)
%d
按月计的日期(例如:01)
%H
时(00-23)
%M
分钟(00..59)
%S
秒(00-60) - 实现步骤
1、创建备份目录
[root@node01 ~]# mkdir -p /backup
[root@node01 ~]# cd /backup/
[root@node01 backup]# ls
2、编辑crontab
[root@node01 backup]# crontab -e
##这里我们使用.xz的方式压缩,即每天的12点、0点的0分钟,进行一次备份
0 */12 * * * /usr/bin/tar -Jcvf /backup/etc-$(date +"\%Y-\%m-\%d-\%H").tar.xz /etc > /dev/null
[root@node01 backup]# ls -l
总用量 282592
-rw-r--r--. 1 root root 6883312 1月 4 12:00 etc-2019-01-04-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月 5 00:00 etc-2019-01-05-00.tar.xz
-rw-r--r--. 1 root root 6887508 1月 5 12:00 etc-2019-01-05-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月 6 00:00 etc-2019-01-06-00.tar.xz
-rw-r--r--. 1 root root 6887508 1月 6 12:00 etc-2019-01-06-12.tar.xz
-rw-r--r--. 1 root root 6887508 1月 7 00:00 etc-2019-01-07-00.tar.xz
-rw-r--r--. 1 root root 6886940 1月 7 12:00 etc-2019-01-07-12.tar.xz
2、rpm包管理功能总结以及实例应用演示。
简介
RPM全名是redhat package manage ,是用来管理软件的各种操作,包括安装、更新、删除、查询、认证。它最大的特点是将软件事先编译,然后打包成为RPM机制的包文件,并且包中记录了此软件在安装时需要的其他依赖软件。在安装时RPM会根据记录比较本地主机数据库中的记录是否满足依赖,若满足则安装,并且把此软件的信息也写入数据库,不满足则不予安装。RPM包命名格式
RPM包分为主包和子功能包
主包:name-version-release.(os).arch.rpm
子包:name-function-version-release.(os).arch.rpm
name:包名
version:源码的版本号,version的格式为major.minor.release,major源代码的主版本号、minor为次版本号、release为源代码的发行次数
release:rpm包的发行号
os:操作系统(可有可无)
arch:硬件架构,有i386、i486、i586、i686、x86_64、powerpc等,其中noarch指无硬件架构限制
function:说明子包的功能特性-
获取程序包的途径:
- 1、系统发行版的光盘或官方的文件服务器(或镜像站点)
http://mirrors.aiyum.com
http://mirrors.163.com - 2、项目的官方站点
- 3、第三方组织:
EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
建议:检查其合法性,源合法性,程序包的完整性
- 1、系统发行版的光盘或官方的文件服务器(或镜像站点)
-
rpm命令的使用
rpm命令按照用途可以分为 安装、升级、卸载、查询、校验、数据库维护这六个区块,下面我们就对各个区块的常用使用方法进行说明- 1、安装
rpm {-i|--install} [install-option] PACKAGE_FILE(包完整文件名)…
-i或者—install为安装选项,一般会配合-v、-h参数一同使用。-v为显示具体的安装信息,-h为显示安装进度。
[install-option] 为安装选项下具体功能选项,常用的有
--nodeps
安装时忽略软件的依赖关系强制安装
--nosignature
安装时不验证包的数字签名即不验证包的来源合法性
--noscripts
禁止软件在安装前或后自动执行某些脚本
--force
强制安装,--replacefiles和—replacepkgs的综合体
--test
不安装只是测试软件能否安装到当前环境,若不能会给出提示
--prefix
将软件安装到想要的路径中,后面接路径名
安装示例:
[root@node01 Packages]# rpm -ivh zip-3.0-11.el7.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:zip-3.0-11.el7 ################################# [100%]
2、更新
rpm {-U|--upgrade} [install-options]PACKAGE_FILE(包完整文件名) ...
rpm {-F|--freshen} [install-options]PACKAGE_FILE(包完整文件名) ...
同安装一样,更新也会和-h、-v选项一同使用
rpm -Uvh name.release.rpm
后面接的软件若不存在,则予以安装,存在则更新
rpm -Fvh name.release.rpm
后面接的软件若不存在,则不安装,存在则更新3、卸载
rpm {-e|--erase} [erase-option] PACKAGE_NAME(已安装的软件名) ...
[erase-option]
--allmatches
卸载所有匹配后面接的软件名的程序包
--nodeps
忽略依赖关系,强制卸载。但卸载后依赖此软件的其他软件会不能使用
--noscripts
在卸载过程前或后不执行任何脚本
--test
只测试,不真正卸载4、查询
rpm {-q|--query} [select-options][query-options]
rpm在查询时是查询/var/lib/rpm这个数据库中的信息,并且rpm还可以查询未安装的rpm文件内的信息
[query-option]
-i
列出该软件的详细信息
-l
列出软件安装生成的所有文件列表
-c
列出该软件的配置文件
-d
列出该软件的说明文件
-R
查询该软件的依赖关系
-s
列出软件包中所有文件的状态
--provides
列出这个软件包提供的功能
--scripts
列出这个软件包在安装或卸载前后可以运行的脚本
--changelog
显示软件包的历史更改信息
[select-options]
-a
列出所有已经安装的软件
-f FILE
后面接文件名,查询该文件属于哪个程序
--whatprovides CAPABILITY
查询指定的CAPABILITY由哪个程序包提供
--whateequires CAPABILITY
查询哪些程序包依赖此CAPABILITY
查询示例:
- 1、安装
[root@node01 Packages]# rpm -qa httpd
httpd-2.4.6-88.el7.centos.x86_64
[root@node01 Packages]# rpm -qf /etc/httpd/conf/httpd.conf
httpd-2.4.6-88.el7.centos.x86_64
[root@node01 Packages]# rpm -q --whatprovides httpd
httpd-2.4.6-88.el7.centos.x86_64
[root@node01 Packages]# rpm -q --whatrequires httpd
没有软件包需要 httpd
[root@node01 Packages]# rpm -q --whatrequires bash
dracut-033-502.el7.x86_64
initscripts-9.49.39-1.el7.x86_64
lvm2-2.02.171-8.el7.x86_64
rsyslog-8.24.0-12.el7.x86_64
[root@node01 Packages]# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
- 5、校验
rpm {-V|--verify} [select-options] [verify-options]
[verify-options]
--nodeps
不验证包的依赖关系
--nodigest
不验证包的完整性
--nosignature
不验证包的来源可靠性
-f FILE
验证某个文件的完整性
一般我们校验时都最好都检查下,所以直接使用rpm -V package_name 即可。
校验后无任何显示输出,说明包的完整性;如果有变化,会显示具体的变化项目
S:文件容量被改变
M:文件属性被改变
5:MD5和被改变,即数据的内容被改变
D:设备的主、次代码被改变
L:link路径被改变
U:文件属主被改变
G:文件属组被改变
T:文件的修改时间被改变
P:功能被改变
例如:修改httpd.conf 文件后在对包进行校验
[root@node01 conf]# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
显示httpd这个程序中的/etc/httpd/conf/httpd.conf这个文件的数据内容和修改时间有过变动
-
6、rpm包来源合法性及包完整性验证机制
rpm包的制作者通过单向加密技术提取出包数据的特征码,特征码用于确保包数据的完整性,如果包中数据被改动,那特征码也一定会发生改变。之后包制作者使用非对称加密技术,利用其中的私钥对之前产生的特征码进行加密,此加密被称为数字签名,并公布与私钥对应的公钥给下载者,由于公钥只能解密对应的私钥,若数字签名被改动,则公钥不能解密,说明下载来源出现问题,从而保证了rpm包的来源合法性。之后下载者通过同样的单向加密技术对rpm包提取特征码,如果提取出的特征码和原特征码一致,就说明rpm包中的数据没有被改动过,从而保证了rpm包的数据完整性导入包制作者的公钥,这里使用的是centos7的公钥位置
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
导入完成后,我们可以查看密钥的具体软件名称和它的基本信息
[root@node01 conf]# rpm -qa |grep pubkey
gpg-pubkey-352c64e5-52ae6884
我们在安装rpm包时,会自动执行验证签名,我们也可以手动验证
[root@node01 ~]# rpm -K epel-release-latest-7.noarch.rpm
epel-release-latest-7.noarch.rpm: rsa sha1 (md5) pgp md5 确定
3、yum的配置和使用总结以及yum私有仓库的创建。
YUM (Yellowdog Update Modifier) 程序包管理器的前端工具,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包。
-
yum客户端安装软件等操作实现原理
- 配置文件:指定各可用的yum仓库;
- 缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地;
- 分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;
- 执行具体操作
- 服务端
将所有需要用到的rpm包存放于某个目录之下,该目录可以是远程的(采用ftp和http协议),也可以是本地的(采用file协议)。目录建立好了之后,使用createrpo命令来提取目录下所有[rpm]包的元数据和依赖关系,生成一些xml格式的文件,这些文件会存放在repodata目录下,至此,服务器端的repository就建立好了。注意repodata所在的位置,就是yum仓库的位置。
服务端提供如下是主要的文件服务
文件服务器:
ftp://
http://
nfs://
file:// - 客户端
客户端的配置非常简单,只需要使用yum及其子命令install、reinstall或remove即可。不过使用yum及其子命令之前,需要编辑配置文件,以告知yum命令仓库repository在什么地方。这个配置文件为:/etc/yum.conf。此外/etc/yum.repos.d/*.repo
都被视为/etc/yum/conf的组成部分。
客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
[main]
cachedir=/var/cache/yum/$basearch/$releasever # 缓存文件路径
keepcache=0 #缓存到本地的文件是否保存
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 #当前发行版版本号从哪儿获取
/etc/yum.repos.d/*.repo 为指定仓库提供配置
[repositoryid] #仓库ID,唯一标识别,不能重复
name=Some name for this repository #完整的仓库名称
baseurl=url://server1/path/to/repository/ # yum仓库指明的访问路径
url://server2/path/to/repository/
url://server3/path/to/repository/
enabled={1|0} 默认为1 #是否启用此yum仓库,默认启用
gpgcheck={1|0} #是否检查完整性和来源合法性
gpgkey=URL #秘钥文件位置,可能是对方仓库提供
enablegroups={1|0} 默认为1 #是否基于组来批量管理程序包,默认支持
failovermethod={roundrobin|priority} #故障转移方法:轮询、根据优先级选择; 默认roundrobin随机
cost=默认为1000 #设置开销,默认为1000
yum的repo配置文件中可用的变量
$releasever: 当前OS的发行版的主版本号
$arch: 平台
$basearch: 基础平台
$YUM0-$YUM9
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 > 清理本地缓存-
创建私有仓库
- 本地光盘镜像
挂载光盘镜像: [root@node01 yum.repos.d]# mount /dev/cdrom /media mount: /dev/sr0 写保护,将以只读方式挂载 创建光盘镜像配置文件: [root@node01 media]# cd /etc/yum.repos.d/ [root@node01 yum.repos.d]# vim CentOS-Media.repo [c7-media] name=CentOS-$releasever - Media baseurl=file:///media gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 验证: [root@node01 yum.repos.d]# yum repolist |grep Media c7-media CentOS-7 - Media 425 [root@node01 yum.repos.d]#
-
同步网络私有yum仓库
思路,通过同步国内的私有仓库地址,更新私有仓库,公司内网用户只需要访问私有仓库,无需直接上网,降低带宽成本,同时提高安装效率。- 1、安装 nginx、yum-utils、createrepo 服务。nginx提供web服务提供客户端访问,yum-utils,createrepo安装仓库管理工具
[root@node2 yumdata]# yum -y install nginx yum-utils createrepo
- 2、创建仓库目录
[root@node2 /]# mkdir -p /yumdata/{centos/{6,7},epel}
- 3、修改/etc/yum.repos.d/CentOS-Base.repo
[root@node2 /]# vim /etc/yum.repos.d/CentOS-Base.repo ## centos7 [base7] name=CentOS-7-os-cmiot.local baseurl=http://mirrors.163.com/centos/7/os/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 [updates7] name=CentOS-7-updates-cmiot.local baseurl=http://mirrors.163.com/centos/7/updates/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 [extras7] name=CentOS-7-extras-cmiot.local baseurl=http://mirrors.163.com/centos/7/extras/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 ## centos6 [base6] name=CentOS-6-os-cmiot.local baseurl=http://mirrors.163.com/centos/6/os/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 [updates6] name=CentOS-6-updates-cmiot.local baseurl=http://mirrors.163.com/centos/6/updates/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 [extras6] name=CentOS-6-extras-cmiot.local baseurl=http://mirrors.163.com/centos/6/extras/x86_64/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 ## epel [epel6] name=CentOS-6-epel-cmiot.local baseurl=https://mirrors.aliyun.com/epel/6/x86_64/ gpgcheck=0 [epel7] name=CentOS-7-epel-cmiot.local baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ gpgcheck=0
- 4、使用yum repolist验证CentOS-Base.repo文件是否生效
[root@node2 yumdata]# yum repolist
- 5、同步文件
[root@node2 yumdata]# reposync -n --repoid=extras6 --repoid=updates6 --repoid=base6 -p /yumdata/centos/6 [root@node2 yumdata]# reposync -n --repoid=extras7 --repoid=updates7 --repoid=base7 -p /yumdata/centos/7 [root@node2 yumdata]# reposync -n --repoid=epel6 -p /yumdata/epel [root@node2 yumdata]# reposync -n --repoid=epel7 -p /yumdata/epel
- 6、createrepo 命令创建yum源
格式:createrepo -po 源目录 索引元数据的输出位置目录 [root@node2 yumdata]# createrepo -po /yumdata/centos/6/base6/ /yumdata/centos/6/base6/ [root@node2 yumdata]# createrepo -po /yumdata/centos/6/updates6/ /yumdata/centos/6/updates6/ [root@node2 yumdata]# createrepo -po /yumdata/centos/6/extras6/ /yumdata/centos/6/extras6/ [root@node2 yumdata]# createrepo -po /yumdata/epel/epel6/ /yumdata/epel/epel6/ [root@node2 yumdata]# createrepo -po /yumdata/centos/7/base7/ /yumdata/centos/7/base7/ [root@node2 yumdata]# createrepo -po /yumdata/centos/7/updates7/ /yumdata/centos/7/updates7/ [root@node2 yumdata]# createrepo -po /yumdata/centos/7/extras7/ /yumdata/centos/7/extras7/ [root@node2 yumdata]# createrepo -po /yumdata/epel/epel7/ /yumdata/epel/epel7/
- 7、配置web服务,修改nginx配置文件
[root@node2 yumdata]# vim /etc/nginx/nginx.conf server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /yumdata; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; } }
- 8、启动nginx服务
[root@node2 ~]# systemctl start nginx [root@node2 ~]# systemctl enable nginx
-
9、浏览器验证
10、同步脚本编写
[root@node2 ~]# vim updata.sh #!/bin/bash # echo 开始同步centos6 reposync -n --repoid=extras6 --repoid=updates6 --repoid=base6 -p /yumdata/centos/6 reposync -n --repoid=epel6 -p /yumdata/epel/ echo centos6同步结束 echo 开始同步centos7 reposync -n --repoid=extras7 --repoid=updates7 --repoid=base7 -p /yumdata/centos/7 reposync -n --repoid=epel7 -p /yumdata/epel/ echo centos7同步结束 #更新元数据 createrepo --update /yumdata/centos/6/base6/ createrepo --update /yumdata/centos/6/updates6/ createrepo --update /yumdata/centos/6/extras6/ createrepo --update /yumdata/epel/epel6/ createrepo --update /yumdata/centos/7/base7/ createrepo --update /yumdata/centos/7/updates7/ createrepo --update /yumdata/centos/7/extras7/ createrepo --update /yumdata/epel/epel7/ echo "$(date +"%Y-%m-%d-%H") 同步完成"
- 设置定时任务
[root@node2 ~]# crontab -e 0 0 * * * sh updata.sh &> /tmp/yum.log
- 1、安装 nginx、yum-utils、createrepo 服务。nginx提供web服务提供客户端访问,yum-utils,createrepo安装仓库管理工具
4、写一个脚本实现列出以下菜单给用户:
(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit
思路,写一个循环,1-3分别代表disk、mem、cpu等信息
4表示退出,只有选择4时脚本才会结束循环退出
当现在1-3中任何一个数字时打印info信息后,并继续循环
[root@node01 ~]# vim dis_info.sh
#!/bin/bash
#
while true
do
cat << END
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
END
read -p "Your choice: " option
case $option in
1)
fdisk -l /dev/sd[a-z];;
2)
cat /proc/meminfo;;
3)
lscpu;;
4)
exit 1;;
*)
echo " Useage [1-4]";;
esac
done
脚本演示
[root@node01 ~]# sh dis_info.sh
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: x
Useage [1-4]
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice: 2
total used free shared buff/cache available
Mem: 3791 148 1221 16 2420 3322
Swap: 6015 0 6015
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
Your choice:
5、sed用法总结并结合实例演示
sed :Stream EDitor ,流编辑器,行操作
格式:sed [OPTION]...'script' [input-file]...
script表示地址定界编辑命令
- 常用选项:
-n:不输出模式空间中的内容至屏幕 -e script,--expression=script: 多点编辑 -f /path/somefile : 每行一个编辑命令 -r :支持使用扩展正则表达式 -i :直接编辑原文件
- 地址定界:
- 1、空地址:对全文进行处理
- 2、单地址
n:指定n行
/pattern/:被此模式所匹配到的每一行 - 3、地址范围
n,m:n~m行
n,+m:n~n+m行
n,/parttern/
/parttern1/,/parttern2/
$,最后一行
4、步进:~
1~2:所有奇数行
2~2:所有偶数行 - 编辑命令:
d:删除
p:显示模式空间中的内容
a \text :在行后面追加文本“text”,支持使用\n实现多行追加
i \text:在行前面追加文本“text”,支持使用\n实现多行追加
c \text:把匹配到的行替换为此处指定的文本“text”
w /path/somefile:保存模式空间匹配到的行至指定的文本中
r /path/from/somefile:读取指定文件的内容至当前文件被匹配到的行后面;文件合并
=:为模式匹配到的行打印行号
!:条件取反
s///:查找替换,其分隔符可自行指定,常用的有s@@@ ,s###
替换标记:
g:全局替换
w /path/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/message/" |sed 's@[^/]\+/\?$@@' echo "/var/log/message/" |sed -r 's@[^/]+/?$@@'
6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序
思路:以nginx日志为例,根据定义的日志格式,先找每行中的IP和状态码对应关系,
并且只有IP和状态码信息,然后根据状态码做锚定[4|5][0-9][0-9],然后根据IP进行排序,去重,再按照出现次数进行排序
awk -F ' ' '{ print $1,$9 }' /var/log/nginx/access.log |grep '\<[4|5][0-9][0-9]\>' |sort -n |uniq -c |sort -n
演示效果:
[root@node2 ~]# awk -F ' ' '{ print $1,$9 }' /var/log/nginx/access.log |grep '\<[4|5][0-9][0-9]\>' |sort -n |uniq -c |sort -nr
16 10.192.52.63 403
8 10.192.52.63 404
1 10.192.2.222 404
1 10.192.1.163 404
[root@node2 ~]#
7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包
先前已经搭建了一个私有仓库,我们利用先前搭建的仓库进行安装
- 1、下载repo配置文件
[root@node01 yum.repos.d]# wget http://10.192.1.164/CentOS7-Base.repo
- 2、查看仓库列表
[root@node01 yum.repos.d]# yum repolist
- 3、安装
[root@node01 yum.repos.d]# yum -y install ftp openssh curl wget tcpdump
已安装: ftp.x86_64 0:0.17-67.el7 tcpdump.x86_64 14:4.9.2-3.el7 更新完毕: curl.x86_64 0:7.29.0-51.el7 openssh.x86_64 0:7.4p1-16.el7 作为依赖被升级: libcurl.x86_64 0:7.29.0-51.el7 nspr.x86_64 0:4.19.0-1.el7_5 nss.x86_64 0:3.36.0-7.el7_5 nss-pem.x86_64 0:1.0.3-5.el7 nss-softokn.x86_64 0:3.36.0-5.el7_5 nss-softokn-freebl.x86_64 0:3.36.0-5.el7_5 nss-sysinit.x86_64 0:3.36.0-7.el7_5 nss-tools.x86_64 0:3.36.0-7.el7_5 nss-util.x86_64 0:3.36.0-1.el7_5 openssh-clients.x86_64 0:7.4p1-16.el7 openssh-server.x86_64 0:7.4p1-16.el7 完毕! [root@node01 yum.repos.d]#