服务器用户、密码变动检测脚本

简介: 服务器上如果有用户变动,或者密码变动会有邮件通知。
#!/bin/bash#说明:#报警计数器位置:#dircount/fileint.txt,dircount/dirint.txt#脚本日志位置:#/tmp/diff.log#脚本主目录:#/tools/passwdmd5/#脚本使用:#初始化安装#./diff_user_passwd.sh install#解除报警,初始化部署#./diff_user_passwd.sh init#正常执行定时任务,或正常检测:#./diff_user_passwd.sh startget_ip()  {
#cmd_get_ip = "/sbin/ifconfig |grep 'inet addr'|awk -F\: '{print $2}'|awk '{print $1}' | grep -v '^127' | grep -v '192'"#cmd_get_ip = "ifconfig |grep 'inet addr'|awk -F\: '{print $2}'|awk '{print $1}' | grep -v '^127'"#return cmd_get_ip#cmd_get_ip=$(/sbin/ifconfig |grep 'inet 192.168.136'|awk -F ' ' '{print $2}'|awk '{print $1}')cmd_get_ip=$(/sbin/ifconfig |grep "192.168.1\." |awk -F ' ''{print $2}'|tr -d "地址:"|tr -d "addr:")echo$cmd_get_ip}
#生成md5文件目录filepath="/tools/passwdmd5"dirpath="/tools/dircount"#格式化日期输出date=`date +%Y-%m-%d@%H:%M:%S`#获取ipip=$(get_ip)#设定报警最大次数,并将此次异常后重置maxint=3#给循环次数初始化varint=0#邮件接收人receiver=你的收件箱
#查看变动if [ -f /tools/passwdmd5/passwd.bak -a-f /tools/passwdmd5/shadow.bak ];then
dfuser=`diff /etc/passwd /tools/passwdmd5/passwd.bak`dfpswd=`diff /etc/shadow /tools/passwdmd5/shadow.bak`elsedfuser=''dfpswd=''fi#新建部署exec_install() {
rm-fr$filepathmkdir-p$filepathrm-fr$dirpathmkdir-p$dirpathcp-f /etc/passwd $filepath/passwd.bak
cp-f /etc/shadow $filepath/shadow.bak
  md5sum /etc/passwd > $filepath/passwdmd5old.log
  md5sum /etc/shadow >> $filepath/passwdmd5old.log
}
#正常添加用户或修改密码后初始化exec_init() {
rm-fr$filepath/passwd.bak $filepath/shadow.bak $filepath/passwdmd5old.log
cp-f /etc/passwd $filepath/passwd.bak
cp-f /etc/shadow $filepath/shadow.bak
  md5sum /etc/passwd > $filepath/passwdmd5old.log
  md5sum /etc/shadow >> $filepath/passwdmd5old.log
echo0 > $dirpath/fileint.txt
}
#正常邮件报警users_alarm() {
echo-e"本机用户有异常!"\\n"用户变化:"\\n$dfuser\\n"密码变化:"\\n$dfpswd | mail -s$ip"服务器上用户有异常,请查看!"$receiver}
#重置邮件报警reset_alarm() {
echo-e"本机用户异常报警超过$maxint次,执行重置命令!"\\n"用户变化:"\\n$dfuser\\n"密码变化:"\\n$dfpswd | mail -s$ip"重置计划:部署已重置,请查看重置前用户异常情况!"$receiverecho0 > $dirpath/fileint.txt
}
#文件被删除报警file_alarm() {
echo-e"$filepath文件被删除报警!"\\n"用户变化:"\\n$dfuser\\n"密码变化:"\\n$dfpswd | mail -s$ip"$filepath文件可能被删除,请检查文件情况!"$receiver}
#目录被删除报警dir_alarm() {
echo-e"$filepath目录被删除报警!" | mail -s$ip"$filepath目录被删除,请检查目录情况!"$receiver}
#对比用户和密码函数diff_user_passwd() {
if [ -f$filepath/passwdmd5old.log -a-f$filepath/passwd.bak -a-f$filepath/shadow.bak ];then
  md5sum /etc/passwd > $filepath/passwdmd5new.log
  md5sum /etc/shadow >> $filepath/passwdmd5new.log
a=`diff -c $filepath/passwdmd5new.log $filepath/passwdmd5old.log`if [ "$a"="" ];then
if [ ! -d$dirpath ];then
mkdir-p$dirpathecho0 > $dirpath/fileint.txt
fiecho"==========================================" >> /tmp/diff.log
echo$date":用户正常。" >> /tmp/diff.log
echo"==========================================" >> /tmp/diff.log
elseecho"==========================================" >> /tmp/diff.log
echo$date":" >> /tmp/diff.log
echo"$a" >> /tmp/diff.log
echo"==========================================" >> /tmp/diff.log
#获取已执行次数if [ ! -d$dirpath ];then
mkdir-p$dirpathecho0 > $dirpath/fileint.txt
fiif [ ! -f$dirpath/fileint.txt ];then
echo0 > $dirpath/fileint.txt
fivarint=`cat $dirpath/fileint.txt`if [ $varint-lt$maxint ] ;then
#获取详细变动      users_alarm
      ((varint++))
echo$varint > $dirpath/fileint.txt
else#进行异常重置及报警      reset_alarm
if [ -f$filepath/passwd.bak -a-f$filepath/shadow.bak ];then
rm-rf$filepath/passwd.bak $filepath/shadow.bak
echo$date":已进行重置,删除passwd.bak,shadow.bak以及passwdmd5old.log三个文件!!!" >> /tmp/diff.log
        exec_init
        diff_user_passwd
else        exec_init
        diff_user_passwd
fififielse#获取已执行次数if [ ! -d$dirpath ];then
mkdir-p$dirpathecho0 > $dirpath/fileint.txt
fiif [ ! -f$dirpath/fileint.txt ];then
echo0 > $dirpath/fileint.txt
fivarint=`cat $dirpath/fileint.txt`if [ $varint-lt$maxint ] ;then
    file_alarm
    ((varint++))
echo$varint > $dirpath/fileint.txt
else    exec_init
    diff_user_passwd
fifi}
#开始执行脚本if [ "$1"="install" ];then
  exec_install
  diff_user_passwd
elif [ "$1"="start" ];then
if [ -d$filepath ];then
    diff_user_passwd
elseif [ ! -d$dirpath ];then
mkdir-p$dirpathecho0 > $dirpath/dirint.txt
fi#循环目录报警次数if [ ! -f$dirpath/dirint.txt ];then
echo0 > $dirpath/dirint.txt
fivarint=`cat $dirpath/dirint.txt`if [ $varint-lt$maxint ] ;then
        dir_alarm
        ((varint++))
echo$varint > $dirpath/dirint.txt
else        exec_install
        diff_user_passwd
fifielif [ "$1"="init" ];then
  exec_init
  diff_user_passwd
elseecho"您输入的参数有误,若是新部署请加参数install来部署或者start来启动"exit0fi
目录
相关文章
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
70 1
|
2月前
|
Linux Shell 数据安全/隐私保护
Linux如何在服务器上进行密码的修改?
【10月更文挑战第6天】Linux如何在服务器上进行密码的修改?
202 1
|
4月前
|
运维 监控 数据库
自动化运维:使用Python脚本实现服务器监控
【8月更文挑战第31天】在这篇文章中,我们将探索如何利用Python编写简单的脚本来实现对服务器的基本监控。通过学习和应用这些技术,你可以快速检测服务器的状态,包括CPU使用率、内存占用和磁盘空间等关键指标。这不仅有助于及时发现问题,还能提升运维效率。文章将逐步引导你理解监控的重要性,并展示如何从零开始构建自己的监控工具。
|
4月前
|
监控 数据挖掘 Linux
Linux服务器PBS任务队列作业提交脚本的使用方法
【8月更文挑战第21天】在Linux服务器环境中,PBS任务队列能高效管理及调度计算任务。首先需理解基本概念:作业是在服务器上执行的任务;队列则是等待执行任务的列表,具有不同的资源限制与优先级;节点指分配给作业的计算资源。
708 4
|
5月前
|
弹性计算 运维 安全
云服务器 ECS产品使用问题之怎么添加登录密码
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
云服务器 ECS产品使用问题之怎么添加登录密码
|
4月前
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
55 3
|
4月前
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
|
4月前
|
监控 Linux Shell
"揭秘!一键掌控Linux服务器健康的秘密武器——超实用系统检查脚本,让你的服务器稳如老狗,告别宕机烦恼!"
【8月更文挑战第14天】服务器宕机或资源耗尽会严重影响业务。为此,你需要一个Linux系统检查脚本来守护服务器健康。它可以自动检测潜在问题如磁盘满载、内存泄漏等,避免服务中断。脚本应包括磁盘空间、内存/CPU使用、系统时间准确性、关键服务状态及系统日志分析等检查项。通过编写并定期运行这样的脚本,可以显著提高服务器的稳定性和可靠性。
64 1
|
4月前
|
运维 监控 网络安全
自动化运维:使用Python脚本实现服务器批量管理
【8月更文挑战第2天】在现代IT运维领域,效率和准确性是衡量工作质量的关键指标。手动管理大量服务器不仅耗时且容易出错,因此自动化运维工具的开发变得至关重要。本文将介绍如何利用Python编写一个简单的自动化脚本,实现对多台服务器的批量管理,包括自动更新、配置同步以及日志收集等功能。通过实际案例展示,我们能够看到自动化运维如何提升工作效率并减少人为错误。
|
4月前
|
存储 运维 监控
自动化运维:使用Python脚本进行服务器监控
【8月更文挑战第31天】在数字化时代,服务器的稳定运行对于企业至关重要。本文将介绍如何使用Python编写一个简单的服务器监控脚本,帮助运维人员及时发现并解决潜在问题。我们将从基础的服务器资源监控开始,逐步深入到日志分析与报警机制的实现。通过实际代码示例和操作步骤,使读者能够快速掌握自动化监控的技能,提升工作效率。