RHCE第5次作业

文章讲述了如何编写一个脚本,根据传入的参数执行gzip、bzip2或xz压缩/etc目录,并在磁盘空间低于20%时发送告警邮件。脚本利用tar工具结合不同的压缩算法,同时演示了如何配置邮件发送和设置周期性任务检查磁盘空间。
摘要由CSDN通过智能技术生成

1.写一个脚本,完成如下功能 传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一

(1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz;

(2) 如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2;

(3) 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz;

(4) 其它任意值,则显示错误压缩工具,并执行非正常退出;

tar选项

-f (必选项):用于指定打包文件名; 当与-c 选项一起使用时,创建的 tar 包文件使用该选项指定的文件名;当与-x 选项一起使用时 , 则释放该选项指定的 tar 包文件

-c :创建.tar 格式的包文件

-x :释放.tar格式的包文件

-t :查看包中的文件列表

-v :表示在命令执行时显示详细的提示信息

-p :打包时保留文件及目录的权限

-z :调用gzip程序,以gzip 格式压缩或解压缩文件( .tar.gz )

-j :调用bzip2程序,以bzip2 格式压缩或解压缩文件( .tar.bz2 )

-J (大写字母J):使用xz压缩或解压缩文件(.tar.xz ), xz 的压缩率通常比 bzip2 更高

-C (大写字母 C ) :和-x 选项一起使用,表示释放包时指定释放的目标路径

-P(大写字母P): 文件名使用绝对名称,不移除文件名称前的"/"号

配置过程

创建脚本文件夹用于存放脚本文件:

 
  1. [root@server ~]# mkdir /script -v

  2. mkdir: 已创建目录 '/script'

 创建/backups文件:

 
  1. [root@server ~]# mkdir /backups -v

  2. mkdir: 已创建目录 '/backups'

创建并编辑脚本文件:

[root@server ~]# vim /script/choose_1
 
  1. #!/bin/bash

  2. read -p "请输入参数(此参数为gzip、bzip2或者xz三者之一):" parameter

  3. if [ $parameter = gzip ];then

  4. tar -czPf /backups/etc-`date +%F--%T`.tar.gz /etc/*

  5. elif [ $parameter = bzip2 ];then

  6. tar -cjPf /backups/etc-`date +%F--%T`.tar.bz2 /etc/*

  7. elif [ $parameter = xz ];then

  8. tar -cJPf /backups/etc-`date +%F--%T`.tar.xz /etc/*

  9. else

  10. echo "错误压缩工具"

  11. exit 5

  12. fi

测试:

 
  1. [root@server ~]# bash /script/choose_1

  2. 请输入参数(此参数为gzip、bzip2或者xz三者之一):gzip

  3. [root@server ~]# echo $?

  4. 0

  5. [root@server ~]# ll /backups/

  6. 总计 10872

  7. -rw-r--r--. 1 root root 11131059 1月 9日 14:28 etc-2024-01-09--14:28:14.tar.gz

  8. [root@server ~]# bash /script/choose_1

  9. 请输入参数(此参数为gzip、bzip2或者xz三者之一):bzip2

  10. [root@server ~]# echo $?

  11. 0

  12. [root@server ~]# ll /backups/

  13. 总计 20400

  14. -rw-r--r--. 1 root root 11131059 1月 9日 14:28 etc-2024-01-09--14:28:14.tar.gz

  15. -rw-r--r--. 1 root root 9752763 1月 9日 14:28 etc-2024-01-09--14:28:33.tar.bz2

  16. [root@server ~]# bash /script/choose_1

  17. 请输入参数(此参数为gzip、bzip2或者xz三者之一):xz

  18. [root@server ~]# echo $?

  19. 0

  20. [root@server ~]# ll /backups/

  21. 总计 28448

  22. -rw-r--r--. 1 root root 11131059 1月 9日 14:28 etc-2024-01-09--14:28:14.tar.gz

  23. -rw-r--r--. 1 root root 9752763 1月 9日 14:28 etc-2024-01-09--14:28:33.tar.bz2

  24. -rw-r--r--. 1 root root 8237912 1月 9日 14:30 etc-2024-01-09--14:29:24.tar.xz

  25. [root@server ~]# bash /script/choose_1

  26. 请输入参数(此参数为gzip、bzip2或者xz三者之一):zxc

  27. 错误压缩工具

  28. [root@server ~]# echo $?

  29. 5

2.报警脚本

要求如下:
根分区剩余空间小于20%
发送告警邮件给自己
配合crond每5分钟检查一次脚本

邮件

安装相关软件:

[root@server ~]# yum install mailx -y

 获取自己的邮箱密钥:

一般在账户设置里,找到:

配置文件:

[root@server ~]# vim  /etc/mail.rc

在文件最后添加:

 
  1. set from=xxx@xxxx.com # 对方收到邮件时显示的发件人

  2. set smtp=smtp.xxxx.com # 邮箱服务器地址,这里也可以是smtp 也可以是smtps

  3. set smtp-auth-user=xxxx@xxxx.com # 邮箱账号

  4. set smtp-auth-password=xxxx # 邮箱的授权码

  5. set smtp-auth=login # smtp的认证方式,默认就是login,也可以改成CRAM-MD5或PLAIN方式

 发邮件:

[root@server ~]# echo 邮件内容 | mail -s "标题" 发给谁

-s:指定邮件标题

-c:可以指定抄送人

-a:后面跟文件可以作为附件发送

-v:可以显示详细的参数

查看磁盘空间

 
  1. [root@server ~]# df -h

  2. 文件系统 大小 已用 可用 已用% 挂载点

  3. devtmpfs 4.0M 0 4.0M 0% /dev

  4. tmpfs 708M 0 708M 0% /dev/shm

  5. tmpfs 283M 5.5M 278M 2% /run

  6. tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup

  7. /dev/mapper/openeuler-root 27G 2.7G 23G 11% /

  8. tmpfs 708M 0 708M 0% /tmp

  9. /dev/sda1 974M 218M 689M 25% /boot

 -h:根据大小适当显示

配置过程

在/script目录下创建新的脚本文件:

[root@server ~]# vim /script/choose_2

编辑脚本文件:

查询并将已使用空间数据剪切出来,判定是否剩余空间小于20%,是则报警并发送邮件:

 
  1. #!/bin/bash

  2. Use=`df -h | grep -w / | tr -s " " " " | cut -d " " -f 5 | cut -d % -f 1`

  3. Surplus=$[100-Use]

  4. if [ $Surplus -lt 20 ]

  5. then

  6. echo 空间不足20% | mail -s "内存警告" 管理员邮箱账号

  7. fi

写入周期性任务(使用cron):

 
  1. #!/bin/bash

  2. Use=`df -h | grep -w / | tr -s " " " " | cut -d " " -f 5 | cut -d % -f 1`

  3. Surplus=$[100-Use]

  4. if [ $Surplus -lt 20 ]

  5. then

  6. echo 空间不足20% | mail -s "内存警告" 管理员邮箱

  7. fi

  8. systemctl restart crond

  9. crontab -e

  10. */s * * * * /bin/bash /script/choose_2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值