免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5762 | 回复: 24
打印 上一主题 下一主题

一个定期修改系统帐户口令的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-07 15:38 |只看该作者 |倒序浏览
本帖最后由 ipod2008 于 2010-03-01 17:38 编辑

#####此文已有更新版      Linux服务器密码自更新脚本-(第2版)架构修订版(原创) http://bbs.chinaunix.net/thread-1661442-1-1.html

目前公司的网站系统中,服务器保有量巨大,因安全需要系统工程部会定期更新一次系统用户密码。随着业务的扩展,机器的日益增加,定期修改帐户密码成为一项繁冗、重复的工作,为减轻系统管理人员的工作强度,开发了这套密码更新系统.
      此系统shell部分有两部分组成,为常见的C/S架构,目前是稳定后的发布版,我个人的负责的机器已经上线

A.   机选口令模块

#!/bin/bash

# Name   : DB_passwd.sh
# Deviser: Li Ming
# Date   : Mon Sep 22 2008
# Purpose: Automatic password revised on a regular basis
# Use    : Unifies the crontab automatic movement
# NOTE   :
# History:
# Mon sep 22 2008  First   release   by Li Ming
# Wen Sep 10 2008  Second  release   by Li Ming
# Thu Dec 11 2008  Third   release   by Li Ming
# Wen Mar 04 2009  Fourth  release   by Li Ming

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin
export PATH

[[ $# != 1  ]]&&{ echo "  ERROR:Usage  /XX/XX/DB_passwd.sh  username ";exit 1; }

LOCKfile=/tmp/alter-passwd.lock
Username=$1
DB_ac=michael
DB_ip=xxx.xxx.xxx.xxx
DB_pw=257ea6949c88@
DB_db=password
DB_Key=michael
DB_table=michael
DB_iplist=/tmp/iplist
Results=/tmp/results.txt
DATE=`date +%F`
DATE2=`date +%Y_%m_%d`
IP=$(ifconfig | grep `route | grep default | awk  '{print $2}'| cut -d"." -f1,2`|awk -F: '{print $2}' |awk '{print $1}')
Addressee="XXXXXXX@qq.com"
Message=/root/shell/message
Mysql=`which mysql`

if [ -f "$LOCKfile" ]
   then
       echo "LOCK file is exist" && exit
   else
       touch $LOCKfile
fi

touch $DB_iplist
touch $Results
#touch $Message

check1=`mysqladmin -h $DB_ip -u $DB_ac -p$DB_pw ping 2> /dev/null |wc -l`
test $check1 -ne 1  && rm -rf $LOCKfile && exit

passwd=`echo $RANDOM | md5sum | awk '{print $1}'|cut -c-12`@

$Mysql -u $DB_ac -h $DB_ip -p$DB_pw -D $DB_db -e "select server,account from $DATE2;"|grep -v server |sed -e 's#\t##g'>$DB_iplist

if [ -z "`grep -x "$IP$Username" $DB_iplist`" ]
   then
      insertSQL="insert into $DATE2 values('','$IP','$Username',AES_ENCRYPT('$passwd','$DB_Key'),'$DATE');"
        $Mysql -u $DB_ac -h $DB_ip -p$DB_pw -D $DB_db -e "$insertSQL"
   else
       updateSQL="update $DATE2 set password=AES_ENCRYPT('$passwd','$DB_Key'),revision_time='$DATE' where server='$IP' and account='$Username';"
      $Mysql -u $DB_ac -h $DB_ip -p$DB_pw -D $DB_db -e "$updateSQL"
fi

selectSQL="select revision_time from $DATE2 where server='$IP' and account='$Username';"
check2=`$Mysql -u $DB_ac -h $DB_ip -p$DB_pw -D $DB_db -e "$selectSQL"| grep -v revision_time`
echo $check2
if [ "$check2" != "$DATE" ]
   then
        deleteSQL="delete from  $DATE2 where server='$IP' and account='$Username';"        
           $Mysql -u $DB_ac -h $DB_ip -p$DB_pw -D $DB_db -e "$deleteSQL"
        rm -rf $LOCKfile
        exit
fi


echo $passwd | passwd $Username --stdin
echo ServerIP AccountUsername Passwdpasswd >>$Results
cat $Message | mutt -s "$DATE-$IP-$1" -a $Results "$Addressee"

rm -rf $LOCKfile
rm -rf $DB_iplist
rm -rf $Results

B.  调用模块

#/bin/bash

Dir=/root/shell
$Dir/dbpasswd.sh  ceshi
$Dir/dbpasswd.sh  michael
#$Dir/dbpasswd.sh  root
#$Dir/dbpasswd.sh  maintain
#$Dir/dbpasswd.sh  weihu
#$Dir/dbpasswd.sh  menhu
#$Dir/dbpasswd.sh  javadev

使用时 将B 脚本 植入crontab  定期任务,密码修改后,从mysql 数据库表中解密导出明文密码表,  多项目分组的情况下,SA朋友们可以结合控制机(无密码链接)使用脚本激发手动临时批量修改!

目前使用下来,效果还可以,有兴趣的网友可以试试,欢迎回馈顶贴!!


小生在深入的学习数据库的过程中,发现次系统还有很多不完善的地方,架构上也不太理想,从数据库的角度开发的话,可以修改为W/S 架构,DB server端维护一张用户列表,结合存贮函数,可以轻松实现用户的管理,比现在的架构方便了许多,DBA 朋友请不吝赐教啊!


ps:  日志记录功能还未加入,crontab系统使用了自更新,定期从指定的web服务器取最新的密码脚本 ,各检测点可增加的mail 信件通知功能,各位仁者见仁、智者见智吧

[ 本帖最后由 ipod2008 于 2009-5-8 17:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-04-07 15:43 |只看该作者
很好很强大,帮顶......
ipod2008 该用户已被删除
3 [报告]
发表于 2009-04-07 15:47 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2009-04-07 15:50 |只看该作者
强大啊!学习学习
hancang2000 该用户已被删除
5 [报告]
发表于 2009-04-07 15:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2009-04-07 16:09 |只看该作者
很不错,对SA管理很有帮助
精华!!

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
7 [报告]
发表于 2009-04-07 16:33 |只看该作者
学习

论坛徽章:
0
8 [报告]
发表于 2009-04-07 19:58 |只看该作者
不错不错,学习了

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
9 [报告]
发表于 2009-04-07 20:11 |只看该作者
支持~~

论坛徽章:
0
10 [报告]
发表于 2009-04-07 20:43 |只看该作者
看起来还是很强大的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP