Zabbix Api脚本:根据文件的主机信息 批量自动创建主机(Python)

例:文件格式为 主机名|IP|端口号|主机群组|模板

test1|10.1.1.1|10050|远景|linux
test2|10.1.1.2|10050|远景|linux
test3|10.1.1.3|10050|远景|linux
test4|10.1.1.4|10050|远景|linux

Python脚本:

import json
import urllib.request
HostIP = []     #ip存放列表
HostName = []   #主机名存放列表
HostTemplate = [] #模板名称存放列表
HostGroup = []  #主机组存放列表

class ZabbixApi:
    def __init__(self):  # 初始化信息
        self.url = 'http://192.10.10.188/zabbix/api_jsonrpc.php'
        self.user = 'Admin'
        self.passwd = 'zabbix'
        self.header = {"Content-Type": "application/json-rpc"}
        #self.auth = self.UserLogin()

    def UserLogin(self): # api登录操作
        data = {
            "jsonrpc": "2.0",
            "method": "user.login",
            "params": {
            "user": self.user,
            "password": self.passwd
            },
            "id": 0,
        }
        return self.UrlRequest(data)

    def UrlRequest(self,data):  ##
        request = urllib.request.Request(self.url,json.dumps(data).encode('utf-8'),self.header)
        result = urllib.request.urlopen(request)
        response = json.loads(result.read().decode('utf-8'))
        return response

    def HostInFo(self):  #将文件主机信息分类加入每个列表中
        host_info_path = "qsq.txt"
        with open(host_info_path, encoding='utf-8', mode='r') as f:
            qsq = f.readlines()
            for list in qsq:
                host_name = list.strip().split('|')[0]
                HostName.append(host_name)
                host_ip = list.strip().split('|')[1]
                HostIP.append(host_ip)
                # host_port = list.strip().split('|')[2]
                host_group_name = list.strip().split('|')[3]
                HostGroup.append(host_group_name)
                template_name = list.strip().split('|')[4]
                HostTemplate.append(template_name)
        f.close()


    def CreateHost(self):  # 创建主机
        for i in range(len(HostIP)):
            ip = HostIP[i]
            name = HostName[i]
            temp = HostTemplate[i]
            if temp == 'linux':
                tempid = 10001
            group = HostGroup[i]
            if group == '远景':
                groupid = 19

            data = {
                        "jsonrpc": "2.0",
                        "method": "host.create",
                        "params": {
                            "host": name,
                            "interfaces": [
                                {
                                    "type": 1,
                                    "main": 1,
                                    "useip": 1,
                                    "ip": ip,
                                    "dns": "",
                                    "port": "10050"
                                }
                            ],
                            "groups": [
                                {
                                    "groupid": groupid
                                }
                            ],
                            "templates": [
                                {
                                    "templateid": tempid
                                }
                            ],
                        },
                        "auth": auth,
                        "id": 1
                    }
            self.UrlRequest(data)
            if i == len(HostIP) - 1:
                return '所有主机已创建完成!'

if __name__ == '__main__':
    response = ZabbixApi().UserLogin()
    auth = response['result']
    print(f'身份令牌为"{auth}"')

    ZabbixApi().HostInFo()

    info = ZabbixApi().CreateHost()
    print(info)

执行结果:

身份令牌为"ecafcb351e266af1bf8dcc77e3a8bc82"
所有主机已创建完成!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值