agent (放在每台客户端服务器上,定时任务) 脚本演示python
# 采集本机的信息 执行命令 import subprocess v1 = subprocess.getoutput('ipconfig') v1 = v1[20:30] #print(v1) v2 = subprocess.getoutput('dir') v2 = v2[2:12] #print(v2)
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
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'])
发送数据
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')