项目实战: CMDB自动化资产扫描

本项目利用KVM虚拟化、Ansible批量部署、Web自动化运维系统,旨在管理上千台服务器实例,提升运维效率。采用HTTP接口设计、MySQL、Redis、MongoDB等技术,实现资产扫描、邮件通知、日志记录等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目参考代码: https://github.com/lvah/cmdb

项目介绍:

本项目通过KVM虚拟化搭建Linux系统集群,使用 Ansible实现Linux集群下的批量部署与自动化管理,
实现Web形式的自动化运维系统,集中批量控制服务器, 最终实现能支撑1000台实例的环境提供管理和自
动化任务, 提高运维工程师的工作质量和效率。 项目基于HTTP实现自动化任务接受和响应接口设计,
基于MySQL用作的关系型数据存取, 基于Redis的任务锁机制和消息队列, 基于MongoDB的事件日志
记录, 最终实现邮件通知功能、敏感数据加密功能、日志事件记录功能。
这个文档主要目标是实现自动化资产扫描, 扫描指定网段的服务器资产信息。

1. 探测局域网哪些主机是存活的(python-nmap)
2. 探测存活主机的ssh端口(22)是否打开?(telnet)
3. 如果ssh端口打开,则可以远程连接查询主机信息(pexpect和paramiko)

步骤一,主机存活探测模块和工具

1)Nmap探测工具 (Linux 系统命令)
Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。是一款用于网络发现和安
全审计的网络安全工具。

  • nmap -n -sp  命令 :主机发现 - 识别网络上的主机。例如,列出响应TCP和/或ICMP请求或打开特定端口的主机。

  • nmap -p 命令 :端口扫描 - 枚举目标主机上的开放端口。 

  • nmap -O 命令 :OS检测 - 确定网络设备的操作系统和硬件特性。

 

2)Nmap 的 Python操作接口: python-nmap

python-nmap是一个使用nmap进行端口扫描的python库,它可以很轻易的生成nmap扫描报告,并且
可以帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。

  •  pip3 install python-nmap -i https://pypi.douban.com/simple               #  安装 nmap的第三方模块

 

步骤二,SSH端口存活扫描

1)telnet命令。

2)telnet 的 Python 模块: telnetlib

telnetlib模块提供的Telnet类实现了Telnet协议。

扫描探测小结:

  • python-nmap 模块:已启用的设备的 IP 列表 (live_ip.list)
  • telnetlib 模块:
  1. Y ,    Linux 服务主机 IP 列表 (linux_ip.list)
  2. NO,  非Linux 服务主机 IP 列表 (nolinux_ip.list)

步骤三,主机登录探测 

主机SSH登录验证方式
SSH常用来远程登录到远程机器,有两种常用的方法:

  • 第一种便是账号密码登录。
  • 第二种就是公钥私钥无密码登录。(如何实现无密码登录?)

1)Python 的SSH登录模块之一 pexpect

Pexpect 用来实现与 ssh、ftp 、telnet 等程序的自动交互。是 Expect 语言的一个 Python 实现,是 一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。

2)Python 的SSH登录模块之一 paramiko  (重要)

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操
作,paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远 程服务器的连接。

模块的安装:

  • pip3 install paramiko -i https://pypi.douban.com/simple        # 安装 paramiko 模块

paramiko核心组件:
paramiko包含两个核心组件:SSHClient 和 SFTPClient(sftp=ssh file transfer protocol)。 SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输
(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。 SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操 作,如文件上传、下载、修改文件权限等操作。

项目代码: 基于paramiko实现ssh客户端密码远程登录 

步骤四,系统信息获取 

获取信息的Linux命令介绍:

  • 获取主机名的命令(选择通用方式): hostname、uname -a、cat /etc/sysconfig/network(主 要针对Centos)
  • 获取系统版本:  cat /etc/issue(可能为空)、cat /etc/redhat-release、uname、lsb_release
  • 获取MAC地址: cat /sys/class/net/ [^vtlsb]*/address、ifconfig  ens33
  • 获取服务器硬件机型: dmidecode  -s  system-manufacturer、dmidecode  -s  system- product-name

CMDB项目  —— 仓库代码链接:https://github.com/dodo837132863/CMDB.git

创建子应用 —— hostinfo

  • python3 manage.py startapp hostinfo
  • 在 /CMDB/setting.py中   INSTALLED_APPS = [...'hostinfo'],   #  添加子应用

后台管理设置

编辑 models.py文件,添加后台管理 数据信息

数据库

  • SQLlite数据库模型 创建与使用(默认使用)               # /CMDB/setting.py 中        

  • python3 manage.py makemigrations                # 生成数据库迁移文件 /migrations/0001_initial.py

  • python3 manage.py migrate                            # 将数据写入到迁移文件中

  • 在 界面 最右侧 database 中添加并查看生成的项目数据库
  1. 拷贝数据存储文件(/CMDB/db.sqlite3)的 路径
  2. 按照数据库类型添加数据库,并配置

                  

                                      

附:MSQL数据库创建

  • /CMDB/setting.py 中   手动添加 数据库配置信息
    • mysql -uroot -p123                                                       # 根据添加的信息,在本地创建 MSQL数据库
    • create database CMDB default charset='utf8';             # 创建完成后,其他操作同上

创建后台管理的超级用户

  • python3 manage.py createsuperuser

将自定义创建的数据库模型,添加到后台进行管理

  • 编辑 /CMDB/hostinfo/admin.py 文件

python3 manage.py runserver                                             # 运行项目,登录后台测试

Django version 3.0.8, using settings 'CMDB.settings'
Starting development server at http://127.0.0.1:8000/               # 登录 http://127.0.0.1:8000/admin

      

上传 GitHub 中的共享仓库 —— CMDB

  1. git init
  2. git add *
  3.  git commit -m "项目数据库与后台管理"
  4.  git remote add origin https://github.com/dodo837132863/CMDB.git
  5.  git push -u origin master

附:Git commit时提示错误时    解决办法

前台管理设置

自定义配置 (资产探测后,针对信息的处理反馈),在/CMBD/setting.py 添加

视图函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值