Agent(方式)
1:服务器每台都需要安装Agent 达到采集速度快,简单;造成性能损耗 获取每台服务器的资产并有返回值:v=subprocess.getoutput('dir')或者ipconfig 返回给api api在进行入库 (api 1.url 2.指定发送数据格式 3.并有返回值给客户端) 2:应用场景:服务较多的公司
客户端: import subprocess v1=subprocess.getoutput('ipconfig') # print(v1) value1=v1[20:30] #采集到一套资产 v2=subprocess.getoutput('dir') #采集到另外一条命令 # print(v2) value2=v2[0:5] #连接到数据库,写入到数据库 数据往url上面发送 url="http://127.0.0.1:8000/asset.html" import requests response=requests.post(url,data={'k1':value1,'k2':value2}) #数据发送到指定url上 发送完数据有返回值,收到url给返回的信息 print(response.text)
服务端 API: from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^asset.html$',views.asset), ] from django.shortcuts import render,HttpResponse # Create your views here. def asset(request): #接收用户发来的消息 if request.method == "POST": print(request.POST) #并写入数据库 return HttpResponse('1002') else: return HttpResponse('1001') #
Paramiko(ssh方式)
通过远程执行一条命令 导入paramiko模块 每个服务器都需要安装SSH远程 流程:中控机去服务器采集信息,采集完的信息返回给中控机 然后中控机把信息又返回给api,api收到消息并返回给中控机 采集的资产信息放在中控机(paramiko模块)v=subprocess.getoutget('ipconfig') 拿到的是中控机的采集信息 中控机在把信息返回给api,api在进行入库 优点:无Agent 缺点:网络慢 应用场景:服务器较少的公司
############## Paramiko ,中控机放一份 ############# """ - 远程连接服务器,执行命令,获取结果 - 将结果发送API """ import paramiko #创建SSH对象 ssh=paramiko.SSHClient() #允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接服务器 ssh.connect(hostname='192.168.24.129',port=22,username='root',password='123456') #执行命令 stdin,stdout,stderr = ssh.exec_command('ls') #表示是要去连接,连接上执行命令 #获取命令结果 result = stdout.read() #关闭连接 ssh.close() #并拿到结果 value=result[0:10] print(value) import requests url = "http://127.0.0.1:8000/asset.html" response=requests.post(url,data={'k1':value,'k2':'v2'}) print(response.text)
from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^asset.html$',views.asset), ] from django.shortcuts import render,HttpResponse # Create your views here. def asset(request): #接收用户发来的消息 if request.method == "POST": print(request.POST) #并写入数据库 return HttpResponse('1002') else: return HttpResponse('1001') #
SaltStack
1. 安装和配置
""" 1. 安装salt-master yum install salt-master 2. 修改配置文件:vim /etc/salt/master interface: 0.0.0.0 # 表示Master的IP 本地ip 3. 启动 service salt-master restart (切记 一定关防火墙 systemctl stop firewalld) """
""" 1. 安装salt-minion yum install salt-minion 2. 修改配置文件 vim /etc/salt/minion master: 10.211.55.4 # master的地址 或 master: - 10.211.55.4 - 10.211.55.5 random_master: True id: c2.salt.com # 客户端在salt-master中显示的唯一ID 3. 启动 service salt-minion restart 切记 一定关防火墙 systemctl stop firewalld) """
2. 授权
在master里面输入 salt -key -L 查看已授权和未授权 salt -key -A 手动授权 salt-key -r salve_id # 拒绝指定id的salve salt-key -d salve_id # 删除指定id的salve
3. 执行命令
在master服务器上对salve进行远程操作
salt 'c2.salt.com' cmd.run 'ifconfig' salt ‘*’ cmd.fun 'ls'
import salt.client local = salt.client.LocalClient() result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])