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

发表于:2020-1-15 09:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Magesh Maruthamuthu    来源:Linux中国

  密码强制策略对所有操作系统和应用程序都是通用的。如果要在 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
  你将收到一封与第一个脚本输出类似的电子邮件。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号