Zabbix绝配!Linux用户密码过期预警与自动发现脚本大揭秘
原创 脚本家园 脚本家园 2024-04-02 06:35 云南 1人听过在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监控工具的强大功能相结合,为您提供了一个强大的解决方案,以确保您的系统始终保持安全和合规。
标签:脚本,bin,过期,用户,密码,Zabbix,Linux,绝配 From: https://www.cnblogs.com/cheyunhua/p/18112484