SHELL脚本练习

发布时间:2024年01月21日

1.自动备份/etc目录脚本

在日常管理Linux系统的过程中,定期备份重要的配置文件是一项关键任务。为了简化这个过程,我们可以编写一个简单的bash脚本来自动执行备份操作。本文将介绍如何编写一个脚本,该脚本可以接受一个参数,用于选择备份时使用的压缩工具。

脚本功能

脚本的功能如下:

  • 接受一个参数,参数值可以是gzip、bzip2或者xz中的一个。

  • 如果参数是gzip,则使用tar和gzip压缩/etc目录至/backups目录中,并命名为/etc-日期.tar.gz。

  • 如果参数是bzip2,则使用tar和bzip2压缩/etc目录至/backups目录中,并命名为/etc-日期.tar.bz2。

  • 如果参数是xz,则使用tar和xz压缩/etc目录至/backups目录中,并命名为/etc-日期.tar.xz。

  • 如果参数是其他任意值,则显示错误信息,并执行非正常退出。

编写脚本

以下是脚本的主要内容:

#!/bin/bash
?
# 检查是否传递了参数
if [ $# -eq 0 ]; then
 ?  echo "错误:请传递参数gzip、bzip2或者xz中的一个"
 ?  exit 1
fi
?
# 设置备份目录
backup_dir="/backups"
?
# 检查参数的值并执行相应的操作
case $1 in
 ?  "gzip")
 ? ? ?  tar -czvf "$backup_dir/etc-$(date +%Y%m%d).tar.gz" /etc
 ? ? ?  ;;
 ?  "bzip2")
 ? ? ?  tar -cjvf "$backup_dir/etc-$(date +%Y%m%d).tar.bz2" /etc
 ? ? ?  ;;
 ?  "xz")
 ? ? ?  tar -cJvf "$backup_dir/etc-$(date +%Y%m%d).tar.xz" /etc
 ? ? ?  ;;
 ?  *)
 ? ? ?  echo "错误:无效的压缩工具,请选择gzip、bzip2或者xz"
 ? ? ?  exit 1
 ? ? ?  ;;
esac
?
echo "压缩完成"

2.磁盘空间报警脚本

在管理Linux系统时,及时发现并处理磁盘空间不足问题是非常重要的。为了实现这一目标,我们可以编写一个简单的bash脚本,定期检查根分区的剩余空间,并在空间小于20%时发送邮件报警。这篇博客将介绍如何编写这个脚本,并通过crontab实现定期执行。

编写报警脚本

首先,我们编写一个脚本,用于检查根分区的剩余空间并发送邮件通知。以下是脚本的主要内容:

vim /etc/warning.sh

#!/bin/bash
?
# 设置根分区的挂载点
root_partition="/"
?
# 设置阈值,当剩余空间小于20%时触发报警
threshold=20
?
# 获取根分区剩余空间百分比
free_space_percent=$(df -h --output=pcent "$root_partition" | tail -n 1 | tr -d '% ')
?
# 检查是否需要触发报警
if [ "$free_space_percent" -lt "$threshold" ]; then
 ?  # 发送邮件通知
 ?  echo "根分区剩余空间低于 $threshold%。当前剩余空间为 $free_space_percent%。请及时处理。" | mail -s "磁盘空间报警" tom@qq.com
fi

配置crontab任务

使用crontab可以定期执行我们的报警脚本。以下是设置每5分钟执行一次脚本的crontab任务:

  1. 打开终端并输入 crontab -e 来编辑crontab文件。

  2. 在文件末尾添加以下行:

*/5 * * * * /etc/warning.sh

保存并退出编辑器。

安装邮件服务

yum install s-nail -y

配置邮件客户端

vim /etc/s-nail.rc
set from=邮箱
set smtp=smtp.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=申请的秘钥
set smtp-auth=login
#最后需要wq!强制退出

文章来源:https://blog.csdn.net/LIUaiCHEN_/article/details/135734926
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。