马哥教育N36第五周作业

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

首先确保crond服务处于运行状态,通过crontab命令添加循环任务

echo "/bin/tar -zcf /data/backup/etc-\$(date '+%Y-%m-%d-%H-%M').tar.gz /etc/* &>/dev/null" > /root/bin/backup.sh
crontab -e
0 */12 * * * /root/bin/backup.sh
2.rpm包管理功能总结以及实例应用演示。

rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。

安装软件包命令说明
rpm -ivh xxx.rpm安装指定的rpm软件包,还可以在线安装
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7导入签名
查询软件包命令说明
rpm -qa | grep ‘http’查询包含http的包
rpm -qa “gpg-pubkey*”查询系统内的所有公钥包
rpm -qf /bin/ls查询ls文件是由哪个包提供
rpm -qi httpd查询httpd包的信息,这里包的名称必须完全正确,多一个少一个字符都不行
rpm -ql httpd查询包安装后产生哪些文件
rpm -qpi xxx.rpm查询未安装rpm包的信息,比如下载了一个包,看看它的描述信息
删除软件包命令说明
rpm -e gpg-pubkey-f4a80eb5-53a7ff4b删除指定的公钥软件包,包的名称要正确
3.yum的配置和使用总结以及yum私有仓库的创建。

yum是rpm的前端工具,可以解决软件包的依赖问题。yum的配置文件分两个部分:一个是 /etc/yum.conf 配置文件为所有仓库提供公共配置,一个是 /etc/yum.repos.d/*.repo 仓库配置文件。yum的日志文件保存在 /etc/log/yum.log 文件中。

常用命令说明
yum repolist显示仓库列表
yum list all http*显示所有安装和可用的以http开头的包信息,表达式支持通配符
yum install pkgname安装软件包
yum reinstall pkgname重新安装,可以解决软件的文件破坏或缺失问题
yum remove pkgname卸载软件包,可能卸载不干净,有些依赖包不会被卸载
yum whatprovides */lsof这个命令可以查找命令对应的软件包名称,很有用
yum history查看yum的事务历史
yum history undo ID适用于不能卸载依赖的包,使用yum事务来取消。至于安装的软件包是哪个事务ID,使用下面的info命令查看。
yum history info ID查看指定ID历史事务的信息
yum grouplist查看可安装的和已经安装的包组信息
yum groupinstall groupname安装包组
常用选项说明
-y自动回答yes
-q静默安装
–disablerepo=repoid临时禁用指定的仓库
–enablerepo=repoid临时启用指定的仓库
–noplugins禁用所有插件

自定义仓库
在 /etc/yum.repos.d/ 目录中新建自定义仓库的配置文件,它最基本的几个要素包括:

[base]                                                                             repoid仓库的标识
name=Centos tsinghua                                                               仓库名称
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/      baseurl仓库的软件所在位置
gpgcheck=1                                                                         是否启用gpg校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7                                gpg公钥
enabled=1                                                                          是否启用仓库
4.写一个脚本实现列出以下菜单给用户:

(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit

#!/bin/bash
echo "(1) disk: show disk info"
echo "(2) mem: show memory info"
echo "(3) cpu: show cpu info"
echo "(*) quit"
read -p "What's your choice:" choice
[[ $choice == 1 ]] && { echo "you choose $choice"; exit; }
[[ $choice == 2 ]] && { echo "you choose $choice"; exit; }
[[ $choice == 3 ]] && { echo "you choose $choice"; exit; }
[[ $choice == '*' ]] && { echo "you choose $choice"; exit; }
echo "you choose nothing."
5.sed用法总结并结合实例演示

sed 是一款过滤和转换文本的强大的流编辑器。sed是 stream editor 的缩写。它主要用来自动编辑一个或多个文件,简化对文件的反复操作。
语法格式如下
sed [option…] ‘script’ input-file…
其中script是由两部分构成:地址和命令。如果没有添加 -e,–expression,-f, 或 --file 选项, 那么第一个非选项参数将被当作是要执行的脚本。

常用选项说明
-n不自动打印所有行
-e后面跟script,只有一个脚本可以不写这个选项,要是多个脚本不能省略
-f后接文件路径,从文件中读取sed要执行的script
-r开启扩展正则表达式的支持
-i.bak备份文件后编辑文件
示例说明
sed ‘3p’ /etc/passwd打印 /etc/passwd 文件的第三行,原文件所有行也将打印
sed -n ‘3p’ /etc/passwd只打印 /etc/passwd 文件的第三行
sed -n ‘1,4p’ /etc/passwd只打印 /etc/passwd 文件的第一行到第四行
sed -n ‘/root/p’ /etc/passwd只打印 /etc/passwd 文件中包行root字符的所有行
sed -n -e ‘/root/=’ -e ‘/root/p’ /etc/passwd第一行打印行号,第二行打印行内容,循环打印所有匹配到的行
sed ‘/root/a\superman\nover’ /etc/passwd在匹配行的下一行添加superman,并换行添加over。支持添加多行内容。
sed ‘/root/i\superman\nover’ /etc/passwd在匹配行的上一行添加superman,并换行添加over。支持添加多行内容。
sed ‘/root/c\superman\nover’ /etc/passwd在匹配行的行替换为superman和over新行。支持替换为多行内容。
sed ‘/^$/d’ file删除file中的空行并打印
sed –n ‘s/root/&superman/p’ /etc/passwd将root替换为rootsuperman字符串,其中&代表是每一个匹配的结果,如一行中有多个字符串匹配则只选取第一个匹配结果
sed –n ‘s/root/&superman/gp’ /etc/passwd将所有的root替换为rootsuperman,g表示行内全局替换
sed -i.bak ‘1d’ /etc/passwd以passwd.bak文件名备份后删除passwd文件的第一行,不会打印到屏幕上
echo /etc/fstab | sed -nr ‘s@(/.*/)([^/]+/?)@\1@p’替换还支持后向引用
6. 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序
# 方法一:
sed -nr 's/^(.*) - -.*" ([0-9]{3}) .*/\2 \1/p' /var/log/httpd/access_log | grep -v '^[0-3]' | cut -d' ' -f2 | sort -nr | uniq -c
# 方法二
awk '$9>400{print $1}' /var/log/httpd/access_log |uniq -c |sort -nr
7. 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包
#!/bin/bash

osver=$(grep -o [0-9] /etc/centos-release | head -n1)
cd /etc/yum.repos.d
if ls *.repo &> /dev/null ;then
  if ! ls bak &> /dev/null;then
    mkdir bak
  fi
  /bin/mv *.repo bak &> /dev/null
fi
cat << eof > base.repo
[base]
name=Centos tsinghua
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/\$releasever/os/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$osver
eof
yum -y -q install ftp openssh curl wget tcpdump &>/dev/null
unset osver
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值