码迷,mamicode.com
首页 > 数据库 > 详细

python---CMDB配置管理数据库

时间:2018-05-19 15:40:50      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:cep   author   logs   lap   .com   命令   use   处理   from   

零:项目目的

是一个运维自动化管理项目:

  为了减少人工干预,降低人员成本
  ---资产管理
  --操作管理

避免人员直接操作服务器,使用后台去统一操作

技术分享图片

一:实现方式

(一)Agent基于shell命令实现(在服务器去上安装Agent,在服务器本机定时自动去获取信息,发送到数据库,然后后台获取数据进行处理)

注意:一般我们不会直接将数据直接传递到数据库,会将数据传递到API接口先进行处理,过滤,然后才会发送到数据库。

技术分享图片

注意:数据是由服务器agent主动发送至API

 实现方案:

本地执行cmd命令。
方法一:os.system("命令")    不可以返回数据
方法二:subprocess模块,使用进程执行命令,可以获取到数据Popen("命令"),进程.stdout.read()<py2>或者直接getoutput("命令")<py3>
技术分享图片
    def agent(self,cmd):
        import subprocess
        try:
            ret = subprocess.getoutput(cmd)
        except AttributeError:
            sub = subprocess.Popen(args=cmd,shell=True,stdout=subprocess.PIPE)
            sub.wait()
            ret = sub.stdout.read()
        return ret
python实现agent

优点:信息采集快,由服务器自己采集信息传递到API

缺点:每台服务器都必须安装Agent


 (二)SSH方法:使用paramiko模块,通过中控机服务器统一去获取指定服务器的信息。

paramiko模块了解

技术分享图片

技术分享图片
def ssh(self,cmd):
        import paramiko
        #1.创建SSH对象
        ssh = paramiko.SSHClient()
        #2.加上这句话不用担心选yes的问题,会自动选上
        #3.用ssh连接远程主机时,第一次连接时会提示是否继续进行远程连接,选择yes
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname="远程主机名",port="远程端口",username="用户名",password="密码")
        #执行命令,获取结果到标准输入\出\错误流中
        stdin,stdout,stderr = ssh.exec_command(cmd)
        #4.获取命令结果
        result = stdout.read()
        #5.关闭连接
        ssh.close()
paramiko实现远程命令执行(方法一:使用用户名,密码)
技术分享图片
    def ssh(self,cmd):
        import paramiko
        #1.创建SSH对象
        ssh = paramiko.SSHClient()
        #2.加上这句话不用担心选yes的问题,会自动选上
        #用ssh连接远程主机时,第一次连接时会提示是否继续进行远程连接,选择yes
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        #3.获取私钥
        private_key = paramiko.RSAKey.from_private_key_file("文件:其中保存了私钥,用于解密")
        #4.通过私钥去连接远程服务器(前提是自己的公钥已经在对方的authorized_keys文件中,paramiko已实现)
        ssh.connect(hostname="远程主机名",port="远程端口",username="用户名",pkey="私钥private_key")
        #5.执行命令,获取结果到标准输入\出\错误流中
        stdin,stdout,stderr = ssh.exec_command(cmd)
        #6.获取命令结果
        result = stdout.read()
        #7.关闭连接
        ssh.close()
        return result
paramiko使用私钥去登录远程服务器执行命令

优点:不需要为服务器安装agent等软件

缺点:速度慢

 

python---CMDB配置管理数据库

标签:cep   author   logs   lap   .com   命令   use   处理   from   

原文地址:https://www.cnblogs.com/ssyfj/p/9060367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!