Zabbix绝配!Linux用户密码过期预警与自动发现脚本大揭秘

Zabbix绝配!Linux用户密码过期预警与自动发现脚本大揭秘

在Linux系统管理中,用户密码的安全性和有效性是至关重要的。为了保持系统的安全性,管理员经常需要确保用户密码定期更换,并提前警告用户其密码即将过期。在这方面,Zabbix监控工具可以发挥巨大的作用。今天,我们将向您展示如何使用两个简单的bash脚本来实现这一目标:第一个脚本用于自动发现系统用户,第二个脚本用于检查用户密码是否即将在7天内过期。

图片

一、自动发现系统用户脚本

首先,让我们看看第一个脚本,它的任务是自动发现系统中所有使用/bin/bash/bin/sh shell的用户。这个脚本通过解析/etc/passwd文件来工作,并生成一个JSON格式的输出,以便Zabbix可以轻松读取和处理。

#!/bin/bash  diskarray=(`awk -F':' '$NF ~ /\/bin\/bash/||/\/bin\/sh/{print $1}' /etc/passwd`)  length=${#diskarray[@]}  printf "{\n"  printf  '\t'"\"data\":["  for ((i=0;i<$length;i++))  do      printf '\n\t\t{'      printf "\"{#USER_NAME}\":\"${diskarray[$i]}\"}"      if [ $i -lt $[$length-1] ];then          printf ','      fi  done  printf  "\n\t]\n"  printf "}\n"

此脚本首先使用awk命令从/etc/passwd文件中提取所有使用/bin/bash/bin/sh shell的用户名,并将它们存储在diskarray数组中。然后,它遍历这个数组,并以JSON格式打印出用户名,这是Zabbix自动发现功能所需要的格式。

二、检查用户密码过期脚本

接下来,我们看第二个脚本,它的任务是检查指定用户的密码是否将在7天内过期。这个脚本对于与Zabbix的触发器结合使用特别有用,可以在密码到期前提醒管理员和用户。

 

#!/bin/bash  export LANG=en_US.UTF-8  SEVEN_DAYS_AGO=$(date -d '-7 day' +'%s')  user="$1"  expires_date=$(sudo chage -l $user | awk -F':' '/Password expires/{print $NF}' | sed -n 's/^ //p')  if [[ "$expires_date" != "never" ]];then      expires_date=$(date -d "$expires_date" +'%s')      if [ "$expires_date" -le "$SEVEN_DAYS_AGO" ];then          echo "1" # 密码即将过期或已过期      else          echo "0" # 密码未过期      fi  else      echo "0" # 密码永不过期  fi

此脚本首先计算当前时间7天前的时间戳。然后,它使用chage -l命令来获取指定用户的密码过期信息,并将其转换为Unix时间戳进行比较。如果密码的过期时间小于或等于7天前的时间戳,脚本将输出“1”,表示密码即将过期或已过期。否则,它将输出“0”,表示密码还有效。

三、如何使用这些脚本

您可以将这些脚本添加到Zabbix的外部脚本目录中,并在Zabbix的前端配置中设置自动发现和触发器,以便在密码到期前接收警告。通过这样做,您可以确保及时处理即将过期的密码,从而维护系统的安全性。


结语:

通过使用这两个简单的bash脚本,您可以轻松地实现Linux系统用户密码的自动发现和过期预警。这些脚本与Zabbix监控工具的强大功能相结合,为您提供了一个强大的解决方案,以确保您的系统始终保持安全和合规。

posted @ 2024-04-03 13:32  技术颜良  阅读(306)  评论(0)    收藏  举报