实现自动采集

运维愿景:
1. 自动装机
2. 配置管理
3. 监控
4. 堡垒机

必备:资产管理
目前状况:
   手动维护Excel表格
资产自动采集并汇报入库

CMDB - 配置管理数据库(资产管理)

1.Agent:每一台服务器一份

前提:机器多的时候适用于Agent
# #### Agent,每一台服务器一份 #####
import subprocess#
v1 = subprocess.getoutput('ipconfig')#发送的命令
value1 = v1[0:30]

v2 = subprocess.getoutput('dir')#发送的命令
value2 = v2[0:10]

# 连接数据库,写到数据库

url = "http://127.0.0.1:8000/index.html"#路径
import requests
#以post的方式发送请求,url和data
response = requests.post(url,data={'k1':value1,'k2':value2})
#response接收return返回来的结果
print(response.text)
Agent
def index(request):
    if request.method == 'POST':
        #接收的是data发送的数据,
        print(request.POST.get('k1'),request.POST.get('k2'))
        #return返回给请求来的用户结果
        return HttpResponse('----------------------')

前提在url配置路径,关闭csrf。
client端

 

2.paramiko:

前景:公司机器少的时候,适合使用paramiko。
# #################### Paramiko,中控机放一份 ####################
"""
- 远程连接服务器,执行命令,获取结果
- 将结果发送API
192.168.11.98
"""

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
ssh.connect(hostname='192.168.11.62', port=22, username='wupeiqi', password='123')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')

# 获取命令结果
result = stdout.read()

# 关闭连接
ssh.close()

#执行的命令结果
value = result[0:10]
print(value)

#请求的url
url = "http://127.0.0.1:8000/index.html"
import requests

response = requests.post(url,data={'k1':value,'k2':value})
print(response.text)
paramiko
def index(request):
    if request.method == 'POST':
        #接收的是data发送的数据,
        print(request.POST.get('k1'),request.POST.get('k2'))
        #return返回给请求来的用户结果
        return HttpResponse('----------------------')
client端


3.saltstack(python开发的)
安装
1 """
2 1. 安装salt-master
3     yum install salt-master
4 2. 修改配置文件:/etc/salt/master
5     interface: 0.0.0.0    # 表示Master的IP 
6 3. 启动
7     service salt-master restart 
8 
9 """
master
 1 """
 2 1. 安装salt-minion
 3     yum install salt-minion
 4 
 5 2. 修改配置文件 /etc/salt/minion
 6     master: 10.211.55.4           # master的地址
 7  8     master:
 9         - 10.211.55.4
10         - 10.211.55.5
11     random_master: True
12 
13     id: c2.salt.com                    # 客户端在salt-master中显示的唯一ID
14 3. 启动
15     service salt-minion start
16 """
minion

 

授权
1 """
2 salt-key -L                    # 查看已授权和未授权的slave
3 salt-key -a  salve_id      # 接受指定id的salve
4 salt-key -r  salve_id      # 拒绝指定id的salve
5 salt-key -d  salve_id      # 删除指定id的salve
6 """
Master

 

执行命令

1 salt '儿子的名称' cmd.run '命令'
2 
3 salt 'python-lb' cmd.run 'ls'
master

 基于salt的API

import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])

 

 







posted @ 2017-07-26 15:40  beiguuu  阅读(149)  评论(0编辑  收藏  举报