python 资产管理
一、Agent 方式
|
1
|
1.这个方法的优点:使用简单,速度快,适合服务器较多场景使用,缺点:服务器比较占资源,性能会变低。<br><br>2.使用Agent的前提条件是客户端(服务器)特别多的时候使用这种方法。<br><br><em id="__mceDel">3.Agent方法原理是在每一台服务器上部署python脚本代码(拷贝到服务器),然后再从每一台服务器中获取硬件信息</em> |
|
1
|
<em id="__mceDel"><em id="__mceDel">4.每一个客户端都会把数据发送给api然后再通过api把每个服务器的信息发送个数据库</em></em> |
Agent 每一个客户端执行的
|
1
2
3
4
5
6
7
8
9
10
11
12
|
import subprocessimport requestsurl="http://127.0.0.1:8000/asset.html"# 设置一个url,也就是api的地址value1= subprocess.getoutput('ipconfig')# 通过subprocess.getoutput获取括号内的命令执行后转成的字符串value2= subprocess.getoutput('dir')# 通过subprocess.getoutput获取括号内的命令执行后转成的字符串response=requests.post(url,data={'k1':value1,'k2':value2})# 通过requests模块以post请求携带字典内容发送到url中,在api端我们设置了返回值,所以当前有一个接收的值print(response.text)# 打印接收参数的内容 |
API
|
1
2
3
4
5
6
7
8
9
10
11
12
|
from django.shortcuts import render,HttpResponse# Create your views here.def asset(request): if request.method=='POST': print(request.POST.get('a')) print(1) return HttpResponse('收到了') else: return HttpResponse('没有收到') |
二、SSH类 paramiko
|
1
2
|
1.优点:无agent,每个服务器不需要进行全部脚本部署,缺点:因为需要远程连接,使用网络会有传输慢弊端<br>2.paramiko 管理模式是通过一个中控主机远程连接到多台服务器一种管理模式3.paramiko 的使用条件是服务比较少的时候<br>4.paramiko 原理通过中控机获取每台服务器的信息,然后返回给api,在由api提交给数据库 |
ssh中控主机的代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import paramikossh=paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname='192.168.227.146',port=22,username='root',password='123456')stdin,stdout,stderr = ssh.exec_command('ifconfig')# 执行命令result = stdout.read()# 获取命令结果ssh.close()# 关闭连接print(result)url="http://127.0.0.1:8000/asset.html"# 设置一个url,也就是api的地址response=requests.post(url,data={'k1':'value1','k2':'value2'})# 通过requests模块以post请求携带字典内容发送到url中,在api端我们设置了返回值,所以当前有一个接收的值print(response.text)# 打印接收参数的内容 |
三、saltstack安装与配置
|
1
|
1.当下最火软件,大部分公司都在使用中 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
saltstack(Python开发)安装与配置安装saltstack (父机)yum install salt-master - y安装完成后进行文件配置vim /etc/salt/master找到master 192.168.227.144 这个地址是服务端本机的地址安装完成并配置完文件后启动客户端service salt- master start安装saltstack(子机)yum install salt-minion - y在客户端的编辑器中修改(vim /etc/salt/minion)找到master 192.168.227.144 这个地址是服务端的地址或 master: - 10.211.55.4 - 10.211.55.5 random_master: Trueid: c2.salt.com # 客户端在salt-master中显示的唯一ID安装完成并配置完文件后启动服务端service salt-minion start需要注意:在服务端和客户端都要把防火墙关闭,不然就不能接受到访问 |
saltstack(Python开发)授权 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 在客户端和服务端的配置文件都没有问题后,能够通讯后就查看授权

在master中通过python访问api进行数据传输
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/usr/bin/python#conding:utf8#import salt.client,requests#local = salt.client.LocalClient()#result = local.cmd('*','cmd.run',['ifconfig'])#url='192.168.11.25'#requests.post(url,result)import subprocess,requestsv=subprocess.getoutput('salt "*" cmd.run "ifconfig"')url ='http://192.168.11.25:8000'requests.post(url,data={'a':v}) |
在中控机上运行python脚本把获取的数据传输到api上然后再通过api提交的数据库
上边方法中所提到的api代码
|
1
2
3
4
5
6
7
8
9
10
11
12
|
from django.shortcuts import render,HttpResponse# Create your views here.def asset(request): if request.method=='POST': # print(request.POST.get('a')) print(1) return HttpResponse('收到了') else: return HttpResponse('没有收到') |
四、puppet(ruby)
|
1
|
1.老公司一般使用这种方式 |
|
1
|
puppet 原理每个服务器会定时回向api发送自己机器相关数据(定时默认为30分钟)然后通过api向数据库提交数据 |

浙公网安备 33010602011771号