CMDB连接方式
1.基于SSH(paramiko)
百台服务器左右

2.基于管理工具(ansible,salt)

3.基于agent(客户端)

1.agent
agent (放在每台客户端服务器上,定时任务) 脚本演示
# 采集本机的信息 执行命令
import subprocess
v1 = subprocess.getoutput('ipconfig')
v1 = v1[20:30]
#print(v1)
v2 = subprocess.getoutput('dir')
v2 = v2[2:12]
#print(v2)
2.paramiko(SSH)
pip install paramiko
连接服务器
import paramiko
private_key = paramiko.RSAKey.from_private_key_file(r'C:/Users/Administrator/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器 #password密码 #pkey密钥
ssh.connect(hostname='192.168.16.85', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
远程执行命令【公钥和私钥】(公钥必须提前上传到服务器)
import paramiko
#密钥
private_key = paramiko.RSAKey.from_private_key_file(r'C:/Users/Administrator/.ssh/id_rsa')
transport = paramiko.Transport(('192.168.16.85', 22))
transport.connect(username='root', password='123456') #pkey=private_key
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
# sftp.put('wy.txt', '/data/wy.txt')
sftp.get('/data/wy.txt', 'xx.txt')
transport.close()
或者将密钥写入文件
key = """-----BEGIN RSA PRIVATE KEY-----"""
import paramiko
from io import StringIO
private_key = paramiko.RSAKey(file_obj=StringIO(key))
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.16.85', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
分发密钥命令
ssh-copy-id -i ~.ssh/id_rsa.pub root@192.168.16.85
3.salt
master
sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
yum install salt-master -y
配置:
/etc/salt/master
interface: 0.0.0.0
启动: service salt-master start
授权:
salt-key -L 查看
salt-key -a id 接受某一个
salt-key -A 接受所有
salt-key -d id 删除某一个
minion
sudo yum install https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm
yum install salt-minion -y
配置:/etc/salt/minion
master: 192.168.16.37
启动: service salt-minion start
命令行:
服务端指定某个服务器执行命令
salt '*' cmd.run 'ifconfig'
python接口:
pip3 install salt -i https://pypi.tuna.tsinghua.edu.cn/simple
#pycharm 中要安装salt
import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
4.数据交互
发送数据
import requests
requests.post(
url='http://127.0.0.1:8000/api/v1/server/',
json={"server":"47.93.255.102","data":data}
)
api (django程序)
"""
from django.shortcuts import render,HttpResponse
def index(request):
if request.method == "POST":
print(request.POST)
return HttpResponse("接受到了")
else:
return HttpResponse("index")
"""
from rest_framework.views import APIView
from rest_framework.response import Response
class ServerViews(APIView):
def post(self,request,*args,**kwargs):
print(request.data)
return Response('1')
CMDB连接方式的更多相关文章
- VMware的三种网络连接方式区别
关于VMware的三种网络连接方式,NAT,Bridged,Host-Only ,在刚接触的时候通常会遇到主机Ping不通虚拟机而虚拟机能Ping得通主机:主机与虚拟机互不相通等等网络问题.本文就这三 ...
- Oracle表的几种连接方式
1,排序 - - 合并连接(Sort Merge Join, SMJ) 2,嵌套循环(Nested Loops, NL) 3,哈希连接(Hash Join, HJ) Join是一种试图将两个表结合在一 ...
- oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定
一.oracle六种连接方式 ①myEclipse中 打开myEclipse,window----show view----Other---输入DB点击DB browser 选中右键New.出现如下页 ...
- 数据库多表连接方式介绍-HASH-JOIN
1.概述 hash join是一种数据库在进行多表连接时的处理算法,对于多表连接还有两种比较常用的方式:sort merge-join 和 nested loop. 为了比较清楚的介绍hash joi ...
- oracle执行计划之-表连接方式
转载自:http://blog.csdn.net/tianlesoftware/article/details/5826546 在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的 ...
- [原]php远程odbc连接sqlsvr数据库,自定义端口,命名实例的连接方式
远程odbc连接sqlsvr数据库,自定义端口,命名实例的连接方式,默认如果不修改的话sqlsvr的端口号是1433,默认实例名就是机器名,,如果既用了命名实例,又改了默认端口,改怎么连接数据库呢? ...
- gitlab两种连接方式:ssh和http配置介绍
gitlab环境部署好后,创建project工程,在本地或远程下载gitlab代码,有两种方式:ssh和http (1)ssh方式:这是一种相对安全的方式 这要求将本地的公钥上传到gitlab中,如下 ...
- Android 设置VPN(pptp连接方式)
本教程以小米手机的MIUI系统为例子,教大家如何设置VPN 先找到“设置”,打开设置菜单,如下图: 在设置菜单里面找“其它连接方式” 然后找到“VPN”,点击进入: 进入VPN设置界面后,如果VPN未 ...
- VirtualBox的四种网络连接方式
VirtualBox中有4中网络连接方式:a. NAT 网络地址转换模式(Network Address Translation)b. Bridged ...
随机推荐
- C++简单程序设计
计算机的最基本功能是数据处理 l C++支持的基本数据类型: n 整数.实数.字符.布尔数据 l C++支持的基本运算 n 算术运算.关系运算.逻辑运算.位运算.逗号运算.条件运算 程序要能够 ...
- 基于Spring Boot的统一异常处理设计
基于Spring Boot的统一异常处理设计 作者: Grey 原文地址:https://www.cnblogs.com/greyzeng/p/11733327.html Spring Boot中,支 ...
- 在Spring Boot项目中使用Spock测试框架
本文首发于个人网站:在Spring Boot项目中使用Spock测试框架 Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目 ...
- Shiro 并发登录控制
本文转载于:https://www.w3cschool.cn/shiro/epht1ifg.html
- git生成SSH秘钥
1.进入git bash , 输入 cd ~/.ssh/ ,没有的话,自己创建 mkdir ~/.ssh , 然后进入该文件夹完成生成秘钥步骤 2.配置全局的name和email,这里是的你githu ...
- Java中的锁[原理、锁优化、CAS、AQS]
1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新, ...
- Spring Cloud 网关服务 zuul 二
有一点上篇文章忘了 讲述,nacos的加载优先级别最高.服务启动优先拉去配置信息.所以上一篇服务搭建我没有讲述在nacos 中心创建的配置文件 可以看到服务端口和注册中心都在配置文件中配置化 属性信息 ...
- C加加学习之路 1——开始
C++是一门古老而复杂的语言,绝不是一门可以速成的语言,学习它需要有意识的刻意练习和长时间的持续不断的磨练.而大多数人不太能耐得住寂寞,喜欢速成,所以像<21天学通C++>这种书就比较受欢 ...
- .Net Core实现健康检查
ASP.NET Core 提供运行状况检查中间件和库,以用于报告应用基础结构组件的运行状况. 运行状况检查由应用程序作为 HTTP 终结点公开. 可以为各种实时监视方案配置运行状况检查终结点: 运行状 ...
- Rest_Framework之频率组件部分
一.RestFramework之频率组件源码部分 频率组件的源码部分和权限组件流程一模一样的,这里就不多说了,直接上源码的主要逻辑部分: def check_throttles(self, reque ...