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 @   技术颜良  阅读(235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2023-04-03 btrfs 创建快照
2022-04-03 k8s event事件的重要性(重要)
2021-04-03 ansible {{}}引用变量,变量中嵌套变量如何表示
2019-04-03 MySQL利用binlog恢复误操作数据(python脚本)
2018-04-03 针对负载均衡集群中的session解决方案的总结
点击右上角即可分享
微信分享提示