奔波儿丷的打怪升级之路--定时邮件通知过期账号

#每天一个shell脚本–定时邮件通知过期账号

##脚本功能:每天08:00定时发送邮件通知Linux系统中即将过期账号信息

#!/bin/bash
#功能:自动邮件提示近10天即将过期的用户
#首先添加用户并设置过期时间(仅为测试用,实际情况视生产而定)
#批量添加用户并设置密码: for i in `seq 1 11`;do useradd user$i && echo user$i | passwd --stdin user$i; done
#设置用户过期时间:for i in `seq 1 10`;do chage -M 90 -W 10 -I 90 user$i; done
#单独设置一个告警天数小于10天的用户chage -M 4 -W 10 user11
#发送邮件前创建两个文件,一个用于存储过期用户信息pass_exp_date.txt,若该文件中用户密码过期时间小于等于10,则将其添加至邮件发送内容文>
件passwd_expr_warning.txt。
#设置邮件信息
SUBJECT="用户密码过期告警"
MESSAGE1="/tmp/pass_exp_date.txt"
MESSAGE2="/tmp/passwd_expr_warning.txt"
TO="[email protected]"
echo "-----------------------------------------" >> $MESSAGE2
echo "用户名                   用户密码过期天数" >> $MESSAGE2
echo "-----------------------------------------" >> $MESSAGE2
for i in `seq 1 11`;
do
#定义当天时间戳
today_stamp=$(date +%s)
#定义用户密码过期的日期
user_exp_date=$(chage -l user$i | grep "Password expires" | cut -d: -f2)
#将过期日期转化为时间戳
user_exp_stamp=$(date -d "$user_exp_date" "+%s")
#计算用户过期剩余时间的时间戳
exp_stamp=`expr \( $user_exp_stamp - $today_stamp \)`
#转化为天数
exp_days=`expr \( $exp_stamp / 86400 \)`
echo "user"$i"             "$exp_days"" >> $MESSAGE1
done
#判断用户密码过期天数是否小于10天
cat $MESSAGE1 | awk '$2 <= 10' >> $MESSAGE2
cat $MESSAGE2
mail -s "$SUBJECT" "$TO" < $MESSAGE2
rm $MESSAGE1
rm $MESSAGE2

##最后设置crontab任务

# crontab -l
0 8 * * * /bin/bash /mage_edu/shell_script/user_passwd_expiry_mail.sh

##发送邮件可使用mail命令,该命令可能需另行安装

# yum install -y mailx

##若收件邮箱使用的是163邮箱,则需开启163邮箱的授权码。
奔波儿丷的打怪升级之路--定时邮件通知过期账号_第1张图片
奔波儿丷的打怪升级之路--定时邮件通知过期账号_第2张图片
##并配置/etc/mail.rc文件

# 发送邮件的配置
set from=[email protected]
set smtp=smtp.163.com:25
set smtp-auth=login
# 授权用户
set smtp-auth-user=[email protected]
# 此处为163的授权密码
set smtp-auth-password=123456
# 忽略验证
set ssl-verify=ignore
set nss-config-dir=/etc/maildbs/

##测试邮件发送是否成功
mail -s “test” [email protected] < /tmp/test.txt
若成功收到邮件则设置无问题。

#知识点
1、Linux命令学习
date命令学习:


```bash
-d, --date=STRING         display time described by STRING, not 'now'
						  显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s, --set=STRING          set time described by STRING
						  根据字符串来设置日期与时间。字符串前后必须加上双引号;
%s   					  seconds since 1970-01-01 00:00:00 UTC
						  从1970年1月1日00:00:00到目前经历的秒数
expr命令:

```bash
expr命令是一款表达式计算工具,使用它完成表达式的求值操作。

expr的常用运算符:

加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
求摸(取余)运算:%
实例
result=`expr 2 + 3`
result=$(expr $no1 + 5)

2、Linux使用mail命令发送stmp邮件给163邮箱
需开启163授权密码,配置/etc/mail.rc配置文件

##该文章仅为奔波儿丷学习专用,如有错误,欢迎指正!
奔波儿丷的打怪升级之路--定时邮件通知过期账号_第3张图片
本文中脚本原始出处:https://zhuanlan.zhihu.com/p/102597189
作者:
Linux 爱好者
学习 Linux 技术
Linux中国

你可能感兴趣的:(奔波儿丷的升级打怪之路,linux,shell)