【CMDB】获取服务器数据
一、通过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】获取服务器数据的更多相关文章
- XMLHTTPRequestObject获取服务器数据
http://www.educity.cn/develop/526316.html 在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数 ...
- nodejs获取服务器数据到页面
const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa(); const route ...
- jsonp获取服务器数据的方式
jsonp获取服务器的数据,有两种 一,跨域 二,不跨域 如果跨域 js的写法有两种 1, <script type="text/javascript"> $(func ...
- 十一、React 获取服务器数据: axios插件、 fetch-jsonp插件的使用
react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 一.axios 获取Api数据 使用文档:https://www. ...
- Android-----使用SoapObject获取服务器数据
新建两个工具类ConnectWeb.java 和 ConnectMethod.java 进行对服务器进行数据交互 ConnectWeb.java代码如下: public class ConnectWe ...
- IOS开发之Post 方式获取服务器数据
//1.创建post方式的 参数字符串url +(NSString *)createPostURL:(NSMutableDictionary *)params { NSString *postStri ...
- Flutter 获取服务器数据
文档 文档版本有些老 使用 dio 来获取数据 demo import 'dart:io'; import 'dart:convert'; import 'package:flutter/materi ...
- 使用$.getJSON("xx.json" ,function(data){ console.logy(data); })在本地获取 json数据
使用 $.getJSON() 在本地获取 json数据 默认在谷歌,火狐等其他浏览器,不允许在本地获取服务器数据 所以不能在本地中使用 但是可以IE 11 中又可以使用,所以,测试时建议在IE浏览器 ...
- Reactjs之Axios、fetch-jsonp获取后台数据
1.新增知识点 /** Axios获取服务器数据(无法跨域,只能让后台跨域获取数据) react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数 ...
随机推荐
- Vue.js实现tab切换效果
利用Vue实现简易tab切换效果 1.1 在我们平时浏览网站的时候,经常看到的特效有图片轮播.导航子菜单的隐藏.tab标签的切换等等.这段时间学习了vue后,开始要写出一些简单的特效. 1.2 实现思 ...
- Blob/DataURL/canvas/image的相互转换
函数都比较简单,直接看就ok了 /*-----------------------------------------------------------------------*/ // canva ...
- vue -- router路由跳转错误 , NavigationDuplicated
vue-router ≥3.0版本回调形式以及改成promise api的形式了,返回的是一个promise,如果路由地址跳转相同, 且没有捕获到错误,控制台始终会出现如图所示的警告 (注:3.0以下 ...
- 下载youtube视频到本地
https://www.clipconverter.cc/ 先通过上面的网站对youtube视频的url 进行解析获得下载链接地址 获得链接地址后 可通过阿里云香港服务器去下载 , 速度比较快 在阿里 ...
- (生鲜项目)02. app与model设计
第一步: 设计app 1. 根据业务需求,设计合适的app板块,这里,我们将拥有goods,trade,user_operation, users四个app 2. 然后去注册app 第二步: 设计us ...
- (转)Java中的String为什么是不可变的? -- String源码分析
背景:被问到很基础的知识点 string 自己答的很模糊 Java中的String为什么是不可变的? -- String源码分析 ps:最好去阅读原文 Java中的String为什么是不可变的 什 ...
- 06 BootStrap前端开发框架(超级好用)
1.BootStrap概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JavaScript 的,它简洁灵活 ...
- [转帖]华为一枝独秀!Q3国内智能手机出货量公布:Ov、小米、iPhone侧目
华为一枝独秀!Q3国内智能手机出货量公布:Ov.小米.iPhone侧目 https://news.cnblogs.com/n/645880/ 华为真生猛.. 作者:花生酱 国内手机市场份额争夺激烈,你 ...
- Hibernate-validator数据验证
前言 数据效验工作在开发工作中,是非常重要的,保证数据的正确性,可靠性,安全性.不仅在前端进行效验,还要在后台继续进行效验. 前端做验证只是为了用户体验,比如控制按钮的显示隐藏,单页应用的路由跳转等等 ...
- lambda表达式笔记
前几天一位好友分享了一篇文章,其中讲到了lambda表达式,正好最近看了一些内容,就做做笔记吧... lambda表达式服务于函数式接口,如果需要一个函数式接口的对象时,就可以用lambda表达式代替 ...