Skip to content

定时巡检脚本与发送邮件系统报告

定时巡检脚本

定时巡检脚本用于定期检查系统的各项指标,并将结果展示出来或保存到文件中。

脚本编写细节

  1. 选择脚本语言:推荐使用 /bin/bash,因为它在不同Linux发行版上兼容性较好。
  2. 获取系统信息
    • 系统基本信息:使用 uname -ahostname -I 等命令获取 IP 地址、主机名、内核版本等信息。
    • CPU 信息:使用 lscpugrep -c ^processor /proc/cpuinfo 获取 CPU 数量和型号。
    • 内存信息:使用 free -mcat /proc/meminfo 获取内存总大小和可用内存。
    • 磁盘信息:使用 df -h 获取根分区大小和可用空间。
    • 用户信息:使用 cut -d: -f1 /etc/passwd | wc -l 获取用户总数,grep -c /bin/bash /etc/passwd 获取可登录用户数量。
  3. 输出格式
    • 使用 echo 命令和格式化字符串输出系统信息,便于阅读和理解。
    • 可以将输出结果保存到文件中,以便后续分析。

示例脚本

bash
#!/bin/bash

# 系统基本信息
echo "########1.系统基本信息######"
ip_address=$(hostname -I)
hostname=$(hostname)
kernel_version=$(uname -r)
distribution=$(lsb_release -d | awk '{print $2}')
echo "IP 地址: $ip_address"
echo "主机名: $hostname"
echo "内核版本: $kernel_version"
echo "发行版本: $distribution"
echo "#################################"

# CPU信息
echo "#########2. CPU 信息###########"
cpu_count=$(grep -c ^processor /proc/cpuinfo)
echo "CPU 数量: $cpu_count"
core_count=$(lscpu | grep '^Core(s) per socket:' | awk '{print $4}')
cpu_model=$(lscpu | grep '^Model name:' | awk '{print $3, $4, $5, $6, $7, $8, $9, $10}')
cpu_arch=$(uname -m)
echo "核心总数: $core_count"
echo "CPU 型号: $cpu_model"
echo "CPU 架构: $cpu_arch"
echo "#########################"

# 内存信息
echo "#########3. 内存信息###########"
mem_total=$(free -m | grep Mem: | awk '{print $2}')
mem_available=$(free -m | grep Mem: | awk '{print $7}')
echo "内存总大小: $mem_total MB"
echo "可用内存: $mem_available MB"
echo "##########################"

# 磁盘信息
echo "#########4. 磁盘信息###########"
root_size=$(df -h / | awk 'NR==2{print $2}')
root_available=$(df -h / | awk 'NR==2{print $4}')
echo "根分区大小: $root_size"
echo "根分区可用空间: $root_available"
echo "##########################"

# 用户信息
echo "#########5. 用户信息###########"
user_count=$(cut -d: -f1 /etc/passwd | wc -l)
virtual_user_count=$(cut -d: -f1 /etc/passwd | grep -c '^\\+')
login_user_count=$(grep -c /bin/bash /etc/passwd)
echo "用户总数: $user_count"
echo "虚拟用户数量: $virtual_user_count"
echo "可登录用户数量: $login_user_count"
echo "##########################"

发送邮件进行系统测试

通过发送邮件可以方便地将系统测试结果通知给相关人员。

发送邮件脚本细节

  1. 配置邮件客户端
    • 在 Linux 系统上,可以使用 mailxsendmails-nail 等邮件客户端发送邮件。
    • 需要配置发件人的邮箱地址、授权码和邮件服务器地址。
  2. 编写发送邮件的脚本
    • 使用邮件客户端的命令发送邮件,如 mail -s "主题" 收件人邮箱 < 邮件内容文件
    • 可以在脚本中使用 echo 命令将测试结果写入邮件内容文件,然后发送邮件。

示例脚本

shell

#!/bin/bash

# 配置发件人信息
FROM="lidao996@163.com"
SMTP_SERVER="smtp.163.com"
SMTP_USER="邮箱6@163.com"
SMTP_PASSWORD="授权码"  # 授权码

# 收件人邮箱
TO="youjiu_linux@qq.com"

# 邮件主题
SUBJECT="系统巡检报告"

# 邮件内容文件
EMAIL_CONTENT="/tmp/system_inspection_report.txt"

# 写入邮件内容
echo "系统巡检报告如下:" > $EMAIL_CONTENT
echo "------------------------" >> $EMAIL_CONTENT
# 这里可以插入系统巡检脚本的输出结果
echo "系统基本信息:" >> $EMAIL_CONTENT
echo "IP 地址: xxx.xxx.xxx.xxx" >> $EMAIL_CONTENT
echo "主机名: xxxxxx" >> $EMAIL_CONTENT
# ...(其他系统信息)

# 发送邮件
echo -e "\n邮件发送中..."
/usr/bin/mail -s "$SUBJECT" -a "$EMAIL_CONTENT" -- "$TO" < $EMAIL_CONTENT

# 删除邮件内容文件
rm -f $EMAIL_CONTENT

echo "邮件发送完成。"

注意事项:

  • 确保邮件客户端已正确安装和配置。
  • 检查防火墙和网络设置,确保能够访问邮件服务器。
  • 使用授权码而不是邮箱密码进行身份验证。
  • 测试邮件发送功能,确保邮件能够成功发送并到达收件人邮箱。

定时任务案例 - 定时巡检

使用 /bin/bash 脚本定期运行,实现定时巡检系统并展示相关信息。

设置定时任务

使用 cron 设置定时任务来定期执行巡检脚本:

  1. 打开 crontab 配置文件:
plain
crontab -e
  1. 添加定时任务(例如,每天早上8点执行巡检脚本):
plain
0 8 * * * /bin/bash /path/to/inspection_script.sh

这样就完成了定时任务的设置,系统会每天自动运行巡检脚本,并将结果通过邮件发送给指定的邮箱。

感谢阅读,欢迎交流!