码迷,mamicode.com
首页 > 编程语言 > 详细

python 资产管理

时间:2017-07-26 23:48:16      阅读:580      评论:0      收藏:0      [点我收藏+]

标签:拷贝   配置   auto   火墙   client   cmd   color   usr   log   

python 资产管理

一、Agent 方式

1.这个方法的优点:使用简单,速度快,适合服务器较多场景使用,缺点:服务器比较占资源,性能会变低。

2.使用Agent的前提条件是客户端(服务器)特别多的时候使用这种方法。

3.Agent方法原理是在每一台服务器上部署python脚本代码(拷贝到服务器),然后再从每一台服务器中获取硬件信息
4.每一个客户端都会把数据发送给api然后再通过api把每个服务器的信息发送个数据库

 

Agent 每一个客户端执行的 

import subprocess
import requests
url="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

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.优点:无agent,每个服务器不需要进行全部脚本部署,缺点:因为需要远程连接,使用网络会有传输慢弊端
2.paramiko 管理模式是通过一个中控主机远程连接到多台服务器一种管理模式 3.paramiko 的使用条件是服务比较少的时候
4.paramiko 原理通过中控机获取每台服务器的信息,然后返回给api,在由api提交给数据库

ssh中控主机的代码

import paramiko
ssh=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.当下最火软件,大部分公司都在使用中
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: True

id: 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进行数据传输

#!/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,requests
v=subprocess.getoutput(‘salt "*" cmd.run "ifconfig"‘)
url =‘http://192.168.11.25:8000‘
requests.post(url,data={‘a‘:v})

在中控机上运行python脚本把获取的数据传输到api上然后再通过api提交的数据库

 

上边方法中所提到的api代码

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.老公司一般使用这种方式
puppet 原理每个服务器会定时回向api发送自己机器相关数据(定时默认为30分钟)然后通过api向数据库提交数据

  

 

python 资产管理

标签:拷贝   配置   auto   火墙   client   cmd   color   usr   log   

原文地址:http://www.cnblogs.com/guobaoyuan/p/7242305.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!