实现自动采集
运维愿景:
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)
def index(request): if request.method == 'POST': #接收的是data发送的数据, print(request.POST.get('k1'),request.POST.get('k2')) #return返回给请求来的用户结果 return HttpResponse('----------------------') 前提在url配置路径,关闭csrf。
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)
def index(request): if request.method == 'POST': #接收的是data发送的数据, print(request.POST.get('k1'),request.POST.get('k2')) #return返回给请求来的用户结果 return HttpResponse('----------------------')
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 """
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 """
授权
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 """
执行命令
1 salt '儿子的名称' cmd.run '命令' 2 3 salt 'python-lb' cmd.run 'ls'
基于salt的API
import salt.client local = salt.client.LocalClient() result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])