配置文件服务器数据采集

服务器数据采集第一版本:

import requests

if mode == 'agent':

  import subprocess

  res = subprocess.getoutput('ifconfig')

  ip_info = res[2:5]

  requests.post('http://127.0.0.1:8001/asset',data = ip_info)

elif mode == 'ssh':

  import paramiko

  ssh = paramiko.SSHClient()

  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

  ssh.connect(hostname='c1.salt.com',port=22,username='root',password='123')

  stdin,stdout,stderr = ssh.exec_command('ifconfig')

  result = stdout.read()

  ssh.close()

elif mode == 'salt':

  import salt.client

  local = salt.client.LocalClient()

  result = local.cmd('c2.salt.com','cmd.run',['ifconfig'])

缺点:扩展性差

优点:开发上线块

版本二:将业务逻辑的代码以插件的形式,写在src目录下面,相比于版本一,更加的清爽,业务逻辑更加的清晰

问题:无法进行随心所欲的注释

版本三:可插拔式的插件采集信息

config.py:

plugins_dict={'a':'插件类名路径',...}

__init__.py

for k,v in self.pluginsSettings.items():

  #k:basic, v:src.plugins.basic.Basic

  module_name,class_name = v.rsplit('.',1)

  m = importlib.import_module(module_name)

  cls = getattr(m,class_name)

  res = cls().process()

  print(res)

插件代码冗余:

1.写一个基类,有一个通用执行的方法,个插件继承基类

2.将函数名作为参数传入一个函数中

salt的调用:
ps:
python2:
import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', [cmd])

python3:
import subprocess
res_cmd = "salt '%s' cmd.run '%s'" % (self.hostname,cmd)
res = subprocess.getoutput(res_cmd)
return res

错误信息的管理:

容错(代码健壮性)

import traceback

traceback.format_exc()

post数据

使用request.body获取数数据

转载于:https://www.cnblogs.com/suncunxu/p/10871414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值