Skip to content

This repository is build for store users' info in servers from servers and make it visible.

Notifications You must be signed in to change notification settings

Polaris0112/User-Management-System

Repository files navigation

User-Management-System

服务器用户信息管理系统

This repository is build for store users' info in servers from servers and make it visible.

Github 开源项目地址: https://github.com/Polaris0112/User-Management-System ,欢迎Start :)

简述

该项目是基于Flask编写的轻量级用户信息管理系统,通过python+ansible+shell组合来构造自动化抓取服务器上的用户信息并存入MySQL数据库中。最后用户可以在页面中,根据关键字查询是否存在对应的用户或者服务器,并能看到用户和服务器的一些简单信息如服务器名称,服务器外网IP、内网IP、用户名、用户组还有用户公钥。

效果图如下:

外网用户信息查询

external_search.png

内网用户信息查询

internal_search.png

搜索失败提示

search_fail.png

部署环境

  • CentOS6/CentOS7 (其他linux系统应该都可以,未测过)

  • python2.7.x

  • ansible

  • mysql

安装过程

  • 安装好mysql,确定数据库名、数据库用户名和数据库密码

  • 推荐:进入virtualenv,安装所需要的依赖包,pip install -r requirement.txt

  • 需要修改以下几个文件:

    • db_update.py:更改文件12-15行关于mysql数据库的配置,就是第一步创建的数据库和账号密码
    • main.py:更改文件6-9行关于mysql数据库的配置,就是第一步创建的数据库和账号密码
    • update.sh:更改文件第6行,把对应路径换成目前正在使用的virtualenv的绝对路径
    • ./roles/fetch_files/tasks/main.yml:更改文件第10行,把dest后的绝对路径换成当前路径并指向到user_data
  • 初始化数据库,执行mysql -u [用户名] -p [数据库名] < init_users.sql

  • 修改external_hosts文件,这个文件是外网服务器的配置文件,可以根据已给出的例子作为模板来对应修改,第一列是服务器备注名,第二列对应的值改成能ssh到服务器的IP,若要修改其他属性项,请参考这里

  • 修改internal_hosts文件,这个文件是内网服务器的配置文件,操作同上

  • (如果需要域名访问)修改user_uWSGI.ini,把其中home对应的值改成当前使用的virtualenv的绝对路径

  • 启动方式:(进入env之后) python main.py 即可 注意:如果是通过域名访问的话,直接运行uwsgi --ini user_uWSGI.ini,不需要执行main.py

项目模块解释

  • mian.py:Flask主程序

  • roles:调用ansible的时候需要使用到的模块,里面有远程抓取时候的操作细节

  • static:网页用到的css、fonts、js文件

  • templates:本项目使用到的两个页面

  • user_data:存放抓取到的用户信息

  • db_update:对user_data里面的数据进行清洗,入库,更新数据库操作的工具

  • Fetch_files.yml:执行ansible的playbook

  • external_hosts:外网服务器的ansible hosts配置文件

  • internal_hosts:内网服务器的ansible hosts配置文件

  • init_users.sql:初始化表结构的sql数据库文件

  • user_uWSGI.ini:用于配置uwsgi的配置文件

  • update.sh:用于整合调用ansible抓取数据,并执行db_update.py入库的自动化工具

工具使用

  • 假如你已经按照上述步骤配置好了,那么你的external_hosts文件和internal_hosts文件已经按照格式配置好,那么接下来就可以使用update.sh工具来进行数据的入库。(前提是可以从本机ssh到目标机器)
用法1: 全更新
    sh update.sh all
    这个操作会先读取内网服务器配置文件,然后抓取到的信息再清洗、更新入库
    然后再读取外网服务器配置文件,进行相同的操作

用法2:部分更新
    sh update.sh [location]  [group-name]
    exp :   sh update.sh external test
    第一个参数是代表当前需要更新的是内网服务器还是外网服务器,这个参数会根据你的选择来判断读取哪个配置文件,只能是external或internal,填入其他返回空结果
    第二个参数是代表需要执行该内/外网服务器配置文件的哪一组服务器,如果你之前有看过ansible inventory的文件格式的话,不难发现是按组区分各类目标的,所以假如你是批量处理的话,直接填上组名就可以抓取该组下所有的服务器用户信息

交流、反馈和建议

  • 邮箱:[email protected]

  • 欢迎各位Fork和Star,也欢迎各位提issue,我会尽快回答

About

This repository is build for store users' info in servers from servers and make it visible.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published