使用 Bash 脚本发送包含几天内到期的用户账号列表的电子邮件

大多数团队忘记更改服务帐户密码,这可能导致日常工作的中断,即使他们配置有基于 SSH 密钥的身份验证。如果用户帐户密码过期,基于SSH密钥的身份验证和

使用 Bash 脚本发送包含几天内到期的用户账号列表的电子邮件

密码强制策略对所有操作系统和应用程序都是通用的。如果要在 Linux 上实现密码强制策略,请参阅以下文章。

默认情况下,大多数公司都会强制执行密码强制策略,但根据公司的要求,密码的时间周期会有所不同。通常每个人都使用 90 天的密码周期。用户只会在他们使用的一些服务器上更改密码,而不会在他们不经常使用的服务器上更改密码。

特别地,大多数团队忘记更改服务帐户密码,这可能导致日常工作的中断,即使他们配置有基于 SSH 密钥的身份验证。如果用户帐户密码过期,基于SSH密钥的身份验证和 cronjob 将不起作用。

为了避免这种情况,我们创建了一个 shell 脚本来向你发送 10 天内到期的用户帐户列表。

本教程中包含两个 bash 脚本可以帮助你收集系统中用户到期天数的信息。

1) 检查 10 天后到期的用户帐户列表

此脚本将帮助你在终端上检查 10 天内到期的用户帐户列表。

“`

vi /opt/script/user-password-expiry.sh

“`

“`

!/bin/sh

/tmp/user-expiry-1.txt
/tmp/user-expiry.txt
echo “-”
echo “UserName The number of days the password expires”
echo “-”
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep ‘Password expires’ |cut -d: -f2)
passexp=$(date -d “$userexpdate” “+%s”)
exp=expr \( $passexp - $today \)
expday=expr \( $exp / 86400 \)
echo “$usern $expday” >> /tmp/user-expiry.txt
done
cat /tmp/user-expiry.txt | awk ‘$2 <= 10’ > /tmp/user-expiry-1.txt
cat /tmp/user-expiry-1.txt | column -t
“`

将文件 user-password-expiry.sh 设置为可执行的 Linux 文件权限。

“`

chmod +x /opt/script/user-password-expiry.sh

“`

你将得到如下输出,但用户与天数可能不同。

“`

sh /opt/script/user-password-expiry.sh


UserName The number of days the password expires

u1 -25
u2 9
u3 3
u4 5
“`

2) 发送包含 10 天内到期的用户帐户列表的电子邮件

此脚本将发送一封包含 10 天内到期的用户帐户列表的邮件。

“`

vi /opt/script/user-password-expiry-mail.sh

“`

“`

!/bin/sh

SUBJECT=”Information About User Password Expiration on “date“”
MESSAGE=”/tmp/user-expiry.txt”
MESSAGE1=”/tmp/user-expiry-1.txt”
TO=”magesh.m@rentacenter.com”
echo “-” >> $MESSAGE1
echo “UserName The number of days the password expires” >> $MESSAGE1
echo “-” >> $MESSAGE1
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep ‘Password expires’ |cut -d: -f2)
passexp=$(date -d “$userexpdate” “+%s”)
exp=expr \( $passexp - $today \)
expday=expr \( $exp / 86400 \)
echo “$usern $expday” >> $MESSAGE
done
cat $MESSAGE | awk ‘$2 <= 10’ >> $MESSAGE1
mail -s “$SUBJECT” “$TO” < $MESSAGE1
rm $MESSAGE
rm $MESSAGE1
“`

将文件 user-password-expiry-mail.sh 设置为可执行的 Linux 文件权限。

“`

chmod +x /opt/script/user-password-expiry-mail.sh

“`

最后,添加一个 cronjob 去自动执行脚本。每天早上 8 点运行一次。

“`

crontab -e

0 8 * * * /bin/bash /opt/script/user-password-expiry-mail.sh
“`

你将收到一封与第一个脚本输出类似的电子邮件。


via: https://www.2daygeek.com/bash-script-to-check-user-account-password-expiry-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:qianmingtian 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

主题测试文章,只做测试使用。发布者:eason,转转请注明出处:https://aicodev.cn/2020/01/14/%e4%bd%bf%e7%94%a8-bash-%e8%84%9a%e6%9c%ac%e5%8f%91%e9%80%81%e5%8c%85%e5%90%ab%e5%87%a0%e5%a4%a9%e5%86%85%e5%88%b0%e6%9c%9f%e7%9a%84%e7%94%a8%e6%88%b7%e8%b4%a6%e5%8f%b7%e5%88%97%e8%a1%a8%e7%9a%84/

Like (0)
eason的头像eason
Previous 2020年1月14日
Next 2020年1月15日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信