# Linux服务器密码定时更改程序 Agent(Python 2.x) - 部署在服务器端,进程常驻,建议使用supervisord来守护,定时更新服务器ssh登陆密码(默认为5分钟) - 程序需要用到一个redis和一个mysql实例 - 配置文件config.py指定mysql和redis和用户信息,字符串需要通过local_generater/word_generater.py加密生成 - 日志输出在logging.conf中配置 - 更新过程中,写入数据或更新密码失败,不会影响服务器正常登陆,客户端可以正常申请到正确的密码 ### 1. 安装 **依赖模块** ```python pip install redis MySQLdb ``` ### 2. 配置 **日志** ```xml [handler_rotateFileHandler] class=handlers.RotatingFileHandler level=DEBUG formatter=simpleFormatter args=('securitypw.log', 'a', 50*1024*1024, 6) ``` - **在logging.py中找到该段落。args指定日志名称,写入方式和轮转周期** **密码修改间隔时间** ```python token_unix_time = hashlib.md5(str(int(self.t) / 300)).hexdigest()[10:] ``` - **aumain.py模块中,第47行tokengenerate函数中str(int(self.t) / 300,修改300为需要的秒数** **配置redis、mysql和用户名** ```python class Config(): #database setting dbhost = '678h0MTkyLjE2OC41LjnTjBX8ugEwNQ' dbport = 'WRed4MzMwNg' dbuser = 'qCgtpZGVhbg' dbpasswd = 'jcwGKMTIzNDU2' dbname = 'yU4LbYXV0aGNlbneWYjqFvQRlcg' #redis setting redishost = 'eZroIMTkyLjE2OC4xvEWFh7azLjgy' redisport = 'MRci8NjM3OQ' redisdb=0 #users users = [ 'mYPeZZG91eXVedTrv2ONvcHM', ] ``` **初始化数据库** ```sql CREATE TABLE `token_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `host` varchar(15) NOT NULL, `time` varchar(45) NOT NULL, `rd_list` varchar(100) NOT NULL, PRIMARY KEY (`id`,`host`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ``` - **config.py模块中,参数均需由local_generater/word_generater.py加密生成,加密模块这里只提供简单的生成和解释部分,一般需要整合到自有的管理平台中** - **在local_generater/word_generater.py中,最后注释了两行打印语句,其中encodestr函数为加密,decodestr函数为解密** - **config.py模块中,users可以指定多个,可以实现多用户的密码定时修改** ### 3. 运行 - **配置完成后,后台执行DyAgent.py即可** - **通过日志输出或检查数据是否正常写入来确认是否工作正常** ### 4. 补充 - **建议通过ansible,fabric等工具批量分发,一个集群内一般配置文件可以做到统一** - **如果集群内配置不一致,可以考虑用puppet或saltstack来管理** - **当前在申请入口上完成度不高,主要是因为大家一般都有自己的管理平台,这一块一般都整合到CMDB中了,不好放出来,我考虑做一个简单的web入口,方便大家拿去整合** - **联系QQ:408963040**