# 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',
                 ]
```
- **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**