CMDB链接方式

1.agent

agent (放在每台客户端服务器上,定时任务) 脚本演示python

# 采集本机的信息  执行命令
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 paramikodjango

链接服务器json

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()

远程执行命令【公钥和私钥】(公钥必须提早上传到服务器)api

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()

或者将密钥写入文件bash

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

masterssh

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   删除某一个

minionpost

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

命令行:url

服务端指定某个服务器执行命令

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')
相关文章
相关标签/搜索