首页 > 系统相关 >Zabbix绝配!Linux用户密码过期预警与自动发现脚本大揭秘

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

时间:2024-04-03 13:48:19浏览次数:28  
标签:脚本 bin 过期 用户 密码 Zabbix Linux 绝配

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

相关文章

  • linux sudo漏洞 可导致用户以 root 权限运行命令
    Sudo的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令,通常是以root用户身份运行命令,以减少root用户的登录和管理时间,同时提高安全性。该漏洞是sudo安全策略绕过问题,可导致恶意用户或程序在目标Linux系统......
  • Linux系统下安装MongoDB的详细步骤
    一、概述MongoDB由C++语言编写,是一个介于关系型数据库和非关系型数据之间的产品,是非关系型数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似与json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语......
  • Linux内核中的通用PHY驱动
    一. 简介前面一篇文章说明了有线网络的网络硬件方案。常用到的一种方案是:内部集成了MAC网络外设的SOC芯片(处理器),外接一个PHY网络芯片。前面文章也学习了Linux内核中的PHY子系统,也是为(上面这种方案)PHY网络芯片提供的驱动框架。Linux内核内部提供了通用的PHY驱动。本文来学......
  • 如何提高Linux RCU实时性
    简介     LinuxRCU(Read-Copy-Update)是一种同步机制,用于提高多处理器系统中读取频繁且写入少的数据结构的性能。在实时系统中,响应时间和预测性是非常重要的。实时性意味着系统能够在严格的时间限制内完成任务。RCU通过减少锁的需求和允许并行读取操作,提高了系统的实时性......
  • linux下mysql8.0更新密码报错解决方案(已知密码)
    先登录./mysql-uroot-p输入密码 然后更改密码直接执行ALTERUSER'root'@'localhost'IDENTIFIEDBY'密码';会失效会报:ERROR1396(HY000):OperationALTERUSERfailedfor'root'@'localhost'进行如下操作即可usemysql;updateuserset......
  • Linux中批量杀进程的方法(转)
    一、使用awk批量杀进程的命令:ps-ef|grephello|grep-vgrep|awk'{print"kill-9"$2}'|sh说明:ps-ef|grephello|grep-vgrep#列出了当前主机中运行的进程中包含hello关键字的进程ps-ef|grephello|grep-vgrep|awk'{print"kill-9"$2}'......
  • linux 中 vim编辑器设置忽略大小写查找
     001、测试数据[root@pc1test01]#lsa.txt[root@pc1test01]#cata.txteerootkkaaeedddeeROOTkkeeddRoot 002、方法1vim打开查找文件,在查找内容的后边增加\c,如果不在末尾增加\c,则表示的是不忽略大小写比如针对root忽略大小写查找:eerootkkaae......
  • LINUX之NFS服务器部署
    主机IP服务端192.168.201.131客户端192.168.201.1321.服务端配置1.1安装NFS和rpc[root@hx1~]#yuminstall-ynfs-utils[root@hx1~]#yuminstall-yrpcbind1.2 启动服务和设置开启启动[root@hx1~]#systemctlstartrpcbind[root@hx1~]#systemctlenablerpcb......
  • Linux 服务器设置 jar包开机自启动
    一、新建jar包启动sh文件新建startup.sh脚本文件,启动项目jar包nohupjava-jartest.jar>/dev/null2>&1&二、设置自动启动命令1.进入rc.d目录执行cd/etc/rc.d命令,进入rc.d目录如图所示(示例):2.修改rc.local文件内容执行命令virc.local,然后按下键盘上的【i】键进入修改模......
  • Linux 诊断工具sysdig
    1、跟踪系统调用sysdigproc.pid=31760sysdigproc.name=nginx2、分析系统性能sysdig-ctop:显示系统中消耗CPU最多的进程。sysdig-ctopprocs_cpu:显示消耗CPU最多的进程及其CPU占用率。sysdig-ctopprocs_mem:显示消耗内存最多的进程及其内存占用量。sysd......