1. 命令路劲问题
1.1. PATH环境变量
1.2. 定时任务运行命令或脚本
-
- 脚本或命令在命令行直接运行时
- 脚本或命令写入到定时中无法执行或输出命令找不到提示
-
- 定时任务运行命令或脚本的时候PATH只有/bin和/usr/bin没有/sbin
- 导致定时任务运行命令或脚本,/bin/以外的命令,无法识别
-
- 针对特定的命令使用绝对路劲,不推荐,命令较少可以
- 根本方法
-
-
- 在脚本开头重新定义PATH变量:export PATH=/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
- 在脚本开头source /etc/profile
1.3. 定向到空问题
- 命令或脚本定向到空 >/dev/null 2>&1 或者追加到文件 >>/var/log/test.log 2>&1
2. 发送邮件
2.1. 安装软件
yum -y install mailx sendmail
apt install s-nail
2.2. 配置邮件服务
cat >>/etc/mail.rc <<EOF
set from=邮箱地址
set smtp=smtp.163.com
set smtp-auth-user=邮箱用户名
set smtp-auth-password=授权码
set smtp-auth=login
EOF
cat >>/etc/s-nail.rc <<EOF
set v15-compat
set from="邮箱地址"
set mta=smtps://邮箱用户名:授权码@smtp.163.com:465
set smtp-auth=login
EOF
2.3. 测试发送邮件
echo "测试邮件" | mail -s 每日表白 邮箱地址mail -s 每日表白 -a /tmp/result.txt 邮箱地址
-a参数可以发送附件
s-nail -s "测试" 邮箱地址
3. 巡检脚本与邮件发送结果
1.编写巡检脚本
#!/bin/bash
#desc: 巡检脚本
#author zbl
source /etc/profile#基本信息
#1.变量
hostname=`hostname`
ip=`ip a s ens33 | awk -F '[ /]+' 'NR==3 {print $3}'`
os=`hostnamectl | awk -F ':' '/Operating System/ {print $2}'`
kernel=`uname -r`
result_file=/tmp/result.txt
title=`date +%F`-巡检结果
mail=邮箱地址#2.使用
cat>${result_file}<<EOF
###########################################
主机基本信息
1.主机名: $hostname
2.ip地址: $ip
3.系统版本: $os
4.内核信息: $kernel
###########################################
EOF#进程信息
#1.变量
procnum=`top -bn1 | awk 'NR==2{print $2}'`
zombie=`top -bn1 | awk 'NR==2{print $(NF-1)}'`#2.使用
cat>>${result_file}<<EOF
进程信息
1.进程总数: $procnum
2.僵尸进程总数: $zombie
EOF#发送邮箱
cat ${result_file} | s-nail -s ${title} ${mail}2.写计划任务
05 09 * * * bash /server/scripts/check_mail.sh >/dev/null 2>&1
#!/bin/bash
#desc: check system info
#author: zbl
source ~/.bashrc
#基本信息
#1.vars变量
hostname=`hostname`
ip=`ip a s ens33 | awk -F '[ /]+' 'NR==4{print $3}'`
os=`hostnamectl | awk -F ':' '/Operating System/{print $2}'`
kernel=`uname -r`
result_file=/tmp/result.txt
title=`date +%F`-巡检结果
mail=邮箱地址#2.使用
cat>${result_file}<<EOF
##################################
基本信息
1.主机名: $hostname
2.ip地址: $ip
3.系统版本: $os
4.内核版本: $kernel
##################################
EOF#进程信息
#1.vars变量
proc_total=`top -bn1 | awk 'NR==2{print $2}'`
zombie=`top -bn1 | awk 'NR==2{print $(NF-1)}'`#2.使用
cat>>${result_file}<<EOF
进程信息
1.进程总数: $proc_total
2.僵尸进程数量: $zombie
EOF#发送邮件
cat ${result_file} | s-nail -s "${title}" ${mail}
4. 总结
