一、通过agent的方式
原理:服务器定制执行py文件通过subprocess模块采集数据发送给数据收集的机器
数据收集的机器:192.168.11.62
服务器:192.168.11.169
数据收集的机器创建Django项目
# urls.py from django.conf.urls import url from .views import collect urlpatterns = [ url('^agent/',collect), ] # views.py from django.shortcuts import render,HttpResponse def collect(request): print("------------------------------") if request.method == 'POST': value = request.POST print(value) return HttpResponse("OK")
服务器192.168.11.169运行的代码
运行命令 :python3 run.py
import subprocess import requests url = 'http://192.168.11.62:8000/api/agent/' # 通过服务器直接发送数据 def get_meg(): data = {} value = subprocess.getoutput('dir') data['k1'] = value # 向后端发送数据 requests.post(url,data=data) if __name__ == '__main__': get_meg()
二、通过ssh的方式
原理:通过中控机的paramiko模块ssh远程连接服务器获取数据发送给数据收集的机器
服务器:192.168.11.169
中控机:192.168.11.59
数据收集的机器:192.168.11.62
数据收集的机器创建Django项目
# urls.py
from django.conf.urls import url
from .views import collect
urlpatterns = [
url('^agent/',collect),
]
# views.py
from django.shortcuts import render,HttpResponse
def collect(request):
print("------------------------------")
if request.method == 'POST':
value = request.POST
print(value)
return HttpResponse("OK")
中控机
运行命令 :python3 run.py
import subprocess import requests import paramiko url = 'http://192.168.11.62:8000/api/agent/' # 通过中控机采集数据 def get_meg2(): # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不再know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='192.168.11.169',port=22,username='root',password='123456') # 执行命令,stdin是继续执行,stdout是返回的结果,stderr出错 stdin,stdout,stderr = ssh.exec_command('df -h') result = stdout.read() # 向后端发送 requests.post(url,data={'k1':result}) ssh.close() if __name__ == '__main__': get_meg2()
三、通过saltstack软件的方式
原理:中控机是salt-master,服务器是salt-minion,master执行命令获取后发送至数据收集的机器
服务器:192.168.11.169
中控机:192.168.11.59
数据收集的机器:192.168.11.62
服务器
yum install epel-release -y yum clean all && yum makecache yum install salt-minion -y # 修改配置文件 vim /etc/salt/minion '''找到master并修改''' master:192.168.11.59 # 启动服务 systemctl start salt-minion
中控机
yum install epel-release -y yum clean all && yum makecache # 安装 yum -y install salt-master # 修改配置文件 vim /etc/salt/master '''找到interfacce并修改 interface: 0.0.0.0 # 启动服务 systemctl restart salt-master
salt-key -L # 查看已授权和未授权的slave salt-key -a salve_id # 接受指定id的salve salt-key -r salve_id # 拒绝指定id的salve salt-key -d salve_id # 删除指定id的salve
查看有未授权的
中控机运行命令
中控机执行的代码
import subprocess import requests import paramiko # salt-master采集数据发送给后端 def get_meg3(): data = {} value = subprocess.getoutput('salt "192.168.11.169" cmd.run "df -h"') data['k1'] = value # 向后端发送数据 requests.post(url,data=data) if __name__ == '__main__': get_meg3()