您的位置:首页 > 运维架构 > Linux

马哥Linux云计算全程班第5周作业(20190722-20190728)

2019-07-28 17:53 1496 查看

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

备份脚本如下:
[root@bccobbler mageedu]# more etcbackup.sh
#!/bin/bash
[ ! -d "/backup" ] && mkdir /backup
datetime=$(/bin/date +"%Y-%m-%d-%H-%M")
/bin/tar -czf /backup/etc-${datetime}.tar.gz /etc
[root@bccobbler mageedu]# crontab -e #在最后一行添加如下行:
0 /12 /bin/bash /root/mageedu/etcbackup.sh &>/dev/null
执行脚本:
[root@bccobbler mageedu]# sh etcbackup.sh

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

rpm命令按照用途可以分为 安装、升级、卸载、查询、校验、数据库维护六个部分;
rpm - RPM Package Manager
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
脚本如下:
[root@bccobbler mageedu]# more os.sh
#!/bin/bash
#
cat << EOF
disk) show disks info
mem) show memory info
cpu) show cpu info
)QUIT
EOF

read -p "Your choice: " option

if [[ "$option" == "disk" ]];then
fdisk -l /dev/[sh]d[a-z]
elif [[ "$option" == "mem" ]];then
free -m
elif [[ "$option" == "cpu" ]];then
lscpu
else
echo "Unknown option."
exit 3
fi
执行结果如下:


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) 步进:~
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:显示替换成功的行;
示例:
显示/etc/passwd文件的奇数行:
[root@bccobbler yum]# cat -n /etc/passwd |sed -n 'p;n'

逆序显示/etc/passswd内容
[root@bccobbler yum]# sed '1!G;h;$!d' /etc/passwd

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

[root@bccobbler mageedu]# 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@bccobbler yum]# mkdir yum
[root@bccobbler yum]# cp /opt/centos/Packages/ftp openssh curl tcpdump ./
[root@bccobbler yum]# createrepo /yum/
Spawning worker 0 with 5 pkgs
Spawning worker 1 with 4 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@bccobbler yum]# vi /etc/yum.repos.d/local.repo
[yum]
name=yum
baseurl=file:///yum/
enabled=1
gpgcheck=0


[root@bccobbler yum]# yum install -y ftp openssh curl wget tcpdump

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: