N35-第五周作业-张同学

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

    • /12 tar czf /back/etc-date +"%F-%H-%M".tar.gz /etc

2、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可以自带脚本;

四类:--noscripts
preinstall:安装过程开始之前运行的脚本,%pre , --nopre
postinstall:安装过程完成之后运行的脚本,%post , --nopost
preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun

3、yum的配置和使用总结以及yum私有仓库的创建。
yum客户端配置文件
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID] name= 仓库名字
baseurl=https:// http:// ftp:// file://
enabled={1|0} 0表示禁用,默认开启
gpgcheck={1|0} 0表示不检查,默认检查
gpgkey=URL 私钥文件位置
enablegroups={1|0}
failovermethod={roundrobin|priority} roundrobin:意为随机挑选,默认值 priority:按顺序访问 cost= 默认为1000
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
实例: http://server/centos/$releasever/$basearch/
yum --nogpgcheck:禁止进行gpg check -y: 自动回答为“yes” -q:静默模式
yum repolist [all|enabled|disabled] 列出源信息
yum list all 列出所有可安装的包
yum install package1 [package2] [...] 安装
yum reinstall package1 [package2] [...] (重新安装)
yum update package1 [package2] [...] 更新
yum downgrade package1 [package2] [...] (降级)
yum check-update 检查可用更新
yum remove | erase package1 [package2] [...] 卸载
yum info package 查看包信息
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 清理本地缓存: 清除/var/cache/yum/$basearch/$releasever缓存
yum search string1 [string2] [...] 以指定的关键字搜索程序包名和相关信息
yum history [info|list|packages-list|packages-info| summary|addon-info|redo|undo| rollback|new|sync|stats] 查看yum事务历史

yum history
yum history info 6
yum history undo 6
yum 程序组合安装相关
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
创建自己的yum仓库
进入. /etc/yum.repos.d/ 建立base.repo文件
[base]
name=carom
baseurl=file:///misc/cd/
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-$releaserver
[network]
name=all
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
enabled=1
gpgkey=https://mirrors.aliyun.com/centos/$releasever/os/x86_64/RPM-GPG-KEY-CentOS-$releasever
禁用network yum源时改为enabled=0

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 "Your chioce: " 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 "Unknow option."
exit 3
fi

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

sed命令具有数据的替换、删除、新增等功能,可以对关键字或行些特定的行进行操作。sed的语法为:sed [OPTION] ... {script} [input-file] .... [action]支持的选项如下:    -r  :支持扩展正则表达式    -n: 静默模式    -e script1  -e script2  -e script3....:指定多脚本运行sed命令    -f  sciprt1   :从指定的文件中读取脚本并运行    -i:直接修改源文件;sed指定某些行使用:    数字:用数字表示某一行    $:   表示最后一行    /regexp/   或   \%regexp%  表示任何能被regexp所匹配的行,后一种表示法是如果regexp中有/所以要换为%为边界符。注意第一个%号前有“\”,第二个%号前没有。    m,n:从第m行开始到第n行为止,中间的所有行(含m行和n行),它有几种变形表示:        m,/regexp/   从第m行开始,到第一次被/regexp/所匹配的行结束,        /regexp1/,/regexp2/   从第一次被/regexp1/所匹配的行开始,到第一次被/regexp2/所匹配的行结束.        m,+n:表示从第m行开始,一直向下的n行    m~n:指定起始行,以及步长,比如1~2,会显示 第1、3、5.....等奇数行,因为步长为2,所以就跳过了偶数行。    !:取反,即选取不匹配的行,比如1!表示非第一行,$!表示非最后一行sed的编辑命令:       d:删除模式空间中的行       =:为模式空间中的行打印行号       a \text  :在行后面追加文本,支持使用\n 实现多行追加       i  \text    在行前面插入文本,支持使用\n 实现多行插入      c  \text    用text替换匹配的行       p :打印模式空间中的行:       s/regexp/replacement/ :  替换由regexp所匹配到的内容为replacement(也可以s@..@...@ 或 s#...#....#) ,还可以在后面加上g表示全局替换;加上i 表示不区分大小写      w  /path/to/file  把指定的内容另存到/path/to/file 路径所指定的文件中       r  /path/to/file   在文件的指定的位置插入另一个文件的所有内容,完成文件合并。sed的模式空间和保持空间:每次读取文件的一行文本到模式空间进行处理,处理后输出到标准输出设备。处理过程中可以把模式空间中的内容存入保持空间等待后续再次读取。相关的操作有:    h:模式空间内容->保持空间(覆盖保持空间原有内容)    H:模式空间内容->保持空间(追加到保持空间原有内容后面)    g:保持空间内容->模式空间(覆盖模式空间原有内容)    G:保持空间内容->模式空间(追加到模式空间原有内容后面)    x: 保持空间内容<-->模式空间内容(两个空间内容互换)    n:读取匹配行的下一行至模式空间(覆盖模式空间原有内容)    N:读取匹配行的下一行至模式空间(追加到模式空间原有内容后面)    d:删除模式空间中的内容    D:删除多行模式空间中的首行    ;    :分号用于分隔脚本命令sed命令实例演示:(1)删除/tmp/grub.conf文件中所有行的行首的空白字符    sed  's/^[[:space:]]+//' /tmp/grub.conf    说明:  ^表示行首,[[:space:]]表示空白字符,[[:space:]]+ 表示多个空白字符,s/...//就表示用空串代替前面的字符,所以就是删除掉的意思(2)删除/tmp/grub.conf  文件中所有以#开头,后跟至少一个空白字符的行行首的#和空白字符    sed  's/^#[[:space:]]+//' /tmp/grub.conf   (3)   把/tmp/grub.conf 文件的奇数行另存为/tmp/grub.conf.3:        sed '1~2w /tmp/grub.conf.3'  /tmp/grub.conf    说明:1~2表示第一行,步长为2,即奇数行,w写入另一个文件    (4) echo 一个文件路径给sed命令,取出其基名和路径名    取路径名: echo "/etc/sysconfig/network-scripts/"|sed 's@[^/]+/\?$@@'    说明:由于字符串中含有路径分隔符“/”所以我们sed要改用s@...@...@,要取出路径名,我们要把最后的文件名或最后一个目录名删除掉,要从尾部开始匹配,[^/]表示所有非/的字符,[^/]+表示一个或多个非/字符,/\? 表示这/可有可无,?要在前面加上\进行转义。最后一个$表示匹配行尾,这样的话如果输入是文件/a/b/c我就可以把c删除掉,如果是路径/a/b/c/我们就可以把c/删除掉。这样就得到路径名    取基名:echo "/etc/sysconfig/network-scripts/"|sed 's@^./([^/]+)/\?$@\1@'    说明:在前面取路径名的基础上,从左边第一个@号开始,^./表示行首+任意字符任意次+/ ,[^/]+表示非\字符一个或多个,它在这个位置就是基名,()表示其中的内容放入正则表达式分组中,然后在第2个@号之后写上“\1"表示引用第一个分组(这里只有一个分组),所以替换后最后留下的就是基名。    (5)显示文件的偶数行            sed  -n 'n;p' test.txt               说明:-n表示静默模式,‘n;p’中的n表示取匹配行的下一行,用分号分隔脚本,p表示打印模式空间中的内容    (6)保留文件的最后一行            sed  '$!d'  test.txt               说明:$表示最后一行,$!表示非最后一行,d表示删除,意思为非最后一行就删除掉,所以结果只显示最后一行内容。      (7)  保留奇数行            sed  'n;d'  test.txt             说明:n表示取匹配行的下一行,用分号分隔脚本,d表示删除。当处理第一行时,取下一行并删除,由于第二行被删除了,所以接下来是处理第三行,处理第三行时,取出下一行删除。……所以最后只剩下奇数行了。       (8) 在文件的每一行后添加空白行            sed 'G'  test.txt            说明:G表示把保持空间中的内容追加到模式空间中原有内容后面,由于保持空间中的内容为空,所以等于在每一行后增加一个空行      (9)在每一行后方有且只有一个空白行            sed  '/^$/d;G'  test.txt                说明:/^$/表示匹配行首位置和行尾位置在一起的行,即中间没有字符的行,即空白行(连空格和tab都没有)。 d表示删除,如果被删除则后续的G也不行执行,G表示在行后面加上一个空白行。注意这里的G与分号前的模式/^$/无关,所以它是对所有行进行操作的。所以最后才会变成,如果非空白行则行后加一个空白行,如果是空白行则删除。        (10)实现文件的倒序显示,有点像tac命令的结果                sed  '1!G;h;$!d'  text.txt                说明:分号隔开的是脚本语句,连模式匹配也被隔断,即模式匹配只能作用于某一个分号段,不能跨分号。1!G表示对非第一行的行把保持空间中的内容追加到模式空间中原有内容后面。h表示对所有行把模式空间内容->保持空间(覆盖保持空间原有内容),$!d表示对非最后一行的行删除模式空间的内容。这样操作下来就会实现文件的倒序显示。

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

awk '{if($(NF-1)>=400)print $1}' abc|sort|uniq -c|sort -r

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

使用本地yum源有两种方式:第一种,直接使用光盘镜像,这种方式仅限于本机使用,第二种,创建本地yum仓库,然后用http或ftp等向外部提供yum仓库服务。第一种:使用发行版光盘作为yum仓库:    1)挂载光盘到某一挂载点        放入光盘或ISO文件        #mkdir /mnt/cdrom        #mount /dev/sr0 /mnt/cdrom    2)备份原来的yum源:        #mkdir /etc/yum.repos.d/bak        #mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/    3)增加一个光盘的yum源        #vi /etc/yum.repos.d/CentOS-Local.repo        [dvdbase]        name=LocalYum        baseurl=file:///mnt/cdrom        gpgcheck=0        enabled=1第二种方式:创建本地yum仓库    请参考上面的第3题的:yum私有仓库的创建的步骤无论哪种方式配置好之后。运行以下命令完成软件安装:    # yum intall ftp  openssh curl  wget  tcpdump -y    说明: -y表示在安装过程中需要交互确认的地方都是回答yes。

转载于:https://blog.51cto.com/14086421/2342303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值