python 版本zabbix_sender

python版本的zabbix_sender:

使用方法:
    1、导入 : from zbx_send import info
    
    2、实例化: test=info()
 
    3、支持方法:
        添加信息: add_data("主机名",‘Key_‘,"报警内容"),可以添加多次
               例:  test.add_data("cluster",‘cluster.core.waring‘,"alert content")
                    test.add_data("cluster",‘cluster.core.waring‘,"alert content")
        
        查看已有信息:
               例: print(test.echo_data()) 返回字典
                   {‘host‘: ‘cluster‘, ‘value‘: ‘alert content‘, ‘key‘: ‘cluster.core.waring‘, ‘clock‘: 1533880388}
                   {‘host‘: ‘cluster‘, ‘value‘: ‘alert content‘, ‘key‘: ‘cluster.core.waring‘, ‘clock‘: 1533880388}
                   
                   
                   print test  返回列表
                   [{‘host‘: ‘cluster‘, ‘value‘: ‘alert content‘, ‘key‘: ‘cluster.core.waring‘, ‘clock‘: 1533880444}, {‘host‘: ‘cluster‘, ‘value‘: ‘alert content‘, ‘key‘: ‘cluster.core.waring‘, ‘clock‘: 1533880444}]

删除内容:  print test.delete_element(test[-1])  返回Boolen

清空内容: print test.clear_data() 返回Boolen            
                 
        修改内容: test[0] == test[1]
        
    4、发送数据:data=test.send_format()
                         print test.send_data(data)
                
                成功返回值: {"response":"success","info":"processed: 2; failed: 0; total: 2; seconds spent: 0.000036"}
                失败返回值: {"response":"success","info":"processed: 0; failed: 2; total: 2; seconds spent: 0.000036"}

class info(object):    """    :function: connect zabbix_server and then sender value    """

    def __init__(self):        self.server = get_server_ip()        if self.server in PROXY_IP:            self.server = ‘106.3.144.10‘        self.port = 31351        self.header = ‘‘‘ZBXD\1{0}{1}‘‘‘        self.data = []

    def __len__(self):        return len(self.data)

    def __repr__(self):        return "{0}".format(self.data)

    def __getitem__(self,index):        return self.data[index]

    def __clock(self):        """        :rtype:int        :functrion: return current timestamp        """        return int(time.time())        def create_obj(self,host,key,value,clock):        """        :type host : str        :type key  : str        :type value:str or int        :type clock: int        :rtype dict        :function : create item value and return to self.add_data        """        obj = {            "host":host,            "key": key,            "value": value        }        if clock:            obj["clock"] = clock        else:            obj["clock"] = self.__clock()        return obj

    def add_data(self,host, key, value, clock=None):        """        :rtype:list        :function : add send value to self.data        """        obj=self.create_obj(host,key,value,clock)        self.data.append(obj)

    def echo_data(self):        """        :rtype list        :function :  print self.data         """        for elem in self.data:            print str(elem)

    @property    def get_data(self):        """        :funtion : return self.data copy        """        return self.data[:]

    def delete_element(self,element):        """        :rtype:bool        :function : delete element from self.data        """        if element in self.data:            self.data.remove(element)        return True

    def clear_data(self):        """        :function : clear self.data        """        self.data=[]        return True

    def send_format(self):        """        :rtype:json        :function : return json data        """        sender_data = {            "request": "sender data",            "data": self.data,        }        return json.dumps(sender_data)

    def send_data(self,data):        """        :rtype:dict        :funtion: send value to zabbix_server        """        data_length = len(data)        data_header = struct.pack(‘i‘,data_length) + ‘\0\0\0\0‘        data_to_send = self.header.format(data_header, data)        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        sock.connect((self.server, self.port))        sock.send(data_to_send)        response_header = sock.recv(5)        if not response_header == ‘ZBXD\1‘:            raise ValueError(‘无效的响应数据‘)        response_data_header = sock.recv(8)        response_data_header = response_data_header[:4]        response_len = struct.unpack(‘i‘, response_data_header)[0]        response_raw = sock.recv(response_len)        sock.close()        response = response_raw        return response

原文地址:https://www.cnblogs.com/flashBoxer/p/9475949.html

时间: 2024-10-10 07:11:52

python 版本zabbix_sender的相关文章

Mac下切换Python版本

Mac下有多个版本的Python时,需要进行版本切换.我使用的是anaconda,在终端下进行包安装时,默认Python版本是MacOS自带的Python,需要进行手动的版本切换. # 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc # 更新bashrc以立即生效 source ~/.bashrc 以我主机为例,切

LInux升级Python版本2.7.11所遇问题汇总

首先请原谅我使用校园网络,基本上打不开谷歌,网络搜取得帮助均来自度娘. 对于我这个linux新手 IT 新手来说,自己升级点东西好担心,万一出错,可能都要重来.... 参照度娘内容和自己摸索,今天晚上的升级以成功结束 哈哈哈 一.我需要把升级Linux里Python版本为2.7.11,度娘一艘,都是各种直接弄好的下载链接,发现了各种复制来复制去的内容,找来找去没找到2.7.11,所以转到了官网www.python.org 首页就可以看到download里最新的2.7.11,点进去,需要的就是最上

更新centos系统的python版本

因今天安装一程序需要用到python高版本,所以升级来系统自带的python. 先查询下系统的python版本是多少. #python -V 显示出来的是2.4.3,太老了,现在升级到比较稳定的版本3.3.0,大家想升级到最新版本可以参考官方网站(https://www.python.org/downloads/). 温馨提示:更新python千万不要把老版本的删除!新老版本是可以共存的,很多基本的命令.软件包都要依赖预装的老版本python的,比如yum. 现在就开始升级操作,在此之前为了防止

在centos中部署多个python版本

使用pyenv+virtualenv方式部署python多版本 pyenv vs virtualenv pyenv 是针对 python 版本的管理,通过修改环境变量的方式实现: virtualenv 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的包虚拟环境,通过切换目录来实现不同包环境间的切换. pyenv 原理 pyenv 的美好之处在于,它并没有使用将不同的 $PATH 植入不同的 shell 这种高耦合的工作方式,而是简单地在 $PATH 的最

2.将python版本改为2.7的方法

1.首先查看当前python的版本 [[email protected] ~]# python -V Python 2.6.6 2.解压2.7版本的python源码包 tar xf Python-2.7.tar.bz2 cd Python-2.7 ./configure --prefix=/usr/local/python2.7 make && make install 3.检查安装结果 [[email protected] ~]# /usr/local/python2.7/bin/pyt

Linux下切换python版本

当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用. $ ls/usr/bin/python*/usr/bin/python /usr/bin/python2 /usr/bin/python2.7/usr/bin/python3 /usr/bin/python3.4/usr/bin/python3.4

centos系统python版本2.6升级到2.7

Centos 6.x上安装的python版本是2.6,不能满足我运行软件的要求,所以对python进行升级. Python的最新版本已经是3.3,但是Python3的兼容性可能还有一定的问题,所以还是升级到2.7较为保险.Python 2.7也能够满足绝大多数的软件需求了. 安装之前需要先安装以下软件: yum install zlib zlib-devel openssl openssl-devel -y 注意:后期安装pip时,如没安装以上软件,会报错,而且安装完上面软件还需要重新编译安装p

修复升级python版本之后ibus输入法不显示控制面板和候选框的问题

因为python版本需求,通过下载python2.7.6源码包,编译安装了python2.7版本.安装完该版本后,发现ibus输入法虽然可以激活使用,但是不显示控制面板,无法更改设置,连候选词条框都没有,使用几乎瘫痪.由于ibus依赖了一些python模块,所以推测是python版本的问题. 1. 尝试打开输入法设置 #ibus-setup Traceback (most recent call last): File "/usr/share/ibus/setup/main.py",

Windows解决anaconda下双python版本安装TensorFlow

首先,就是双版本anaconda的安装: 以前安装好的是python2.7版本,而TensorFlow的安装仅支持3.5版本的.但是自己本来的2.7版本又不想遗弃.所以安装双版本的: 在anaconda的官网上下载2.7版本和3.5版本: 先安装其中一个,我是想安装的2.7.一路next就可以了. 重点来了,安装3.5版本的过程如下: 1. 我下载的版本是Anaconda3-4.3.1-Windows-x86_64.下载地址:https://repo.continuum.io/archive/