Linux服务器密码定时更改程序 Agent(Python 2.x)
- 部署在服务器端,进程常驻,建议使用supervisord来守护,定时更新服务器ssh登陆密码(默认为5分钟)
- 程序需要用到一个redis和一个mysql实例
- 配置文件config.py指定mysql和redis和用户信息,字符串需要通过local_generater/word_generater.py加密生成
- 日志输出在logging.conf中配置
- 更新过程中,写入数据或更新密码失败,不会影响服务器正常登陆,客户端可以正常申请到正确的密码
1. 安装
依赖模块
pip install redis MySQLdb
2. 配置
日志
[handler_rotateFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('securitypw.log', 'a', 50*1024*1024, 6)
- 在logging.py中找到该段落。args指定日志名称,写入方式和轮转周期
密码修改间隔时间
token_unix_time = hashlib.md5(str(int(self.t) / 300)).hexdigest()[10:]
- aumain.py模块中,第47行tokengenerate函数中str(int(self.t) / 300,修改300为需要的秒数
配置redis、mysql和用户名
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',
]
- 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