一、通过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='') # 执行命令,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()

【CMDB】获取服务器数据的更多相关文章

  1. XMLHTTPRequestObject获取服务器数据

    http://www.educity.cn/develop/526316.html 在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数 ...

  2. nodejs获取服务器数据到页面

    const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa(); const route ...

  3. jsonp获取服务器数据的方式

    jsonp获取服务器的数据,有两种 一,跨域 二,不跨域 如果跨域 js的写法有两种 1, <script type="text/javascript"> $(func ...

  4. 十一、React 获取服务器数据: axios插件、 fetch-jsonp插件的使用

    react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 一.axios 获取Api数据 使用文档:https://www. ...

  5. Android-----使用SoapObject获取服务器数据

    新建两个工具类ConnectWeb.java 和 ConnectMethod.java 进行对服务器进行数据交互 ConnectWeb.java代码如下: public class ConnectWe ...

  6. IOS开发之Post 方式获取服务器数据

    //1.创建post方式的 参数字符串url +(NSString *)createPostURL:(NSMutableDictionary *)params { NSString *postStri ...

  7. Flutter 获取服务器数据

    文档 文档版本有些老 使用 dio 来获取数据 demo import 'dart:io'; import 'dart:convert'; import 'package:flutter/materi ...

  8. 使用$.getJSON("xx.json" ,function(data){ console.logy(data); })在本地获取 json数据

    使用 $.getJSON() 在本地获取 json数据  默认在谷歌,火狐等其他浏览器,不允许在本地获取服务器数据 所以不能在本地中使用 但是可以IE 11 中又可以使用,所以,测试时建议在IE浏览器 ...

  9. Reactjs之Axios、fetch-jsonp获取后台数据

    1.新增知识点 /** Axios获取服务器数据(无法跨域,只能让后台跨域获取数据) react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数 ...

随机推荐

  1. 泡泡一分钟:Tightly-Coupled Aided Inertial Navigation with Point and Plane Features

    Tightly-Coupled Aided Inertial Navigation with Point and Plane Features 具有点和平面特征的紧密耦合辅助惯性导航 Yulin Ya ...

  2. python递归函数(10)

    一个函数在函数体内部调用自己,这样的函数称为递归函数,递归的次数在python是有限制的,默认递归次数是997次,超过997次会报错:RecursionError. 一.递归函数案例 案例一:计算数字 ...

  3. PHP 23种设计模式

    学习PHP,对设计模式永远是逃不掉的:今天把php23种设计模式及其demo好好整理如下: 记录PHP关于23种设计模式的简单Demo. Demo地址:https://segmentfault.com ...

  4. Echarts数据可视化grid直角坐标系(xAxis、yAxis)

    mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 font ...

  5. djngo未整理

    Django Django基础命令 - runserver 本地建议运行Django - shell 进入Django项目得python shell环境 - test 执行Django 用列测试 数据 ...

  6. c# 用XmlWriter写xml序列化

    using System.Text; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; using ...

  7. python学习-62 类属性的增 删 该 查

    类属性 1.类属性 类属性又称为静态变量,或者是静态数据.这些数据是与它们所属的类对象绑定的,不依赖于任何类实例. 2.增 删 改 查 class zoo: country = 'china' def ...

  8. 数据分析——Pandas的用法(Series,DataFrame)

    我们先要了解,pandas是基于Numpy构建的,pandas中很多的用法和numpy一致.pandas中又有series和DataFrame,Series是DataFrame的基础. pandas的 ...

  9. golang内建容器

  10. JavaScript Web API 全选反选案例

    全选反选 全选和反选功能,在开发中可以说是应用得非常多的,以下通过案例分解,学习如何使用JS实现全选反选功能. 该功能可分为如下三大步骤: 1.全选 1.1 获取父checkbox,注册点击事件 1. ...