Appearance
定时巡检脚本与发送邮件系统报告
定时巡检脚本
定时巡检脚本用于定期检查系统的各项指标,并将结果展示出来或保存到文件中。
脚本编写细节
- 选择脚本语言:推荐使用
/bin/bash
,因为它在不同Linux发行版上兼容性较好。 - 获取系统信息:
- 系统基本信息:使用
uname -a
、hostname -I
等命令获取 IP 地址、主机名、内核版本等信息。 - CPU 信息:使用
lscpu
或grep -c ^processor /proc/cpuinfo
获取 CPU 数量和型号。 - 内存信息:使用
free -m
或cat /proc/meminfo
获取内存总大小和可用内存。 - 磁盘信息:使用
df -h
获取根分区大小和可用空间。 - 用户信息:使用
cut -d: -f1 /etc/passwd | wc -l
获取用户总数,grep -c /bin/bash /etc/passwd
获取可登录用户数量。
- 系统基本信息:使用
- 输出格式:
- 使用
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 "##########################"
发送邮件进行系统测试
通过发送邮件可以方便地将系统测试结果通知给相关人员。
发送邮件脚本细节
- 配置邮件客户端:
- 在 Linux 系统上,可以使用
mailx
、sendmail
或s-nail
等邮件客户端发送邮件。 - 需要配置发件人的邮箱地址、授权码和邮件服务器地址。
- 在 Linux 系统上,可以使用
- 编写发送邮件的脚本:
- 使用邮件客户端的命令发送邮件,如
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
设置定时任务来定期执行巡检脚本:
- 打开
crontab
配置文件:
plain
crontab -e
- 添加定时任务(例如,每天早上8点执行巡检脚本):
plain
0 8 * * * /bin/bash /path/to/inspection_script.sh
这样就完成了定时任务的设置,系统会每天自动运行巡检脚本,并将结果通过邮件发送给指定的邮箱。