Zabbix Api 根据excel文件中的主机信息批量创建主机

例:excel文件由以下数据组成:主机名-可见名称-ip地址-端口号-主机组-挂载模板名称

Py代码如下:

from openpyxl import load_workbook
import json
import urllib.request

min_line = 2  #定义从第几行读取数据,需修改
max_line = 9  #定义从第几行数据结束,需修改
# 列的数量(即表头)应固定,本例中数据分为6类即6列,不再定义变量,根据列的数量调整GetHostInfo函数中使用到的数值 需修改
HostName_list = [] #定义主机Hostname列表
Visible_HostName_list = [] #定义主机可见名称列表
HostIP_list = [] #定义主机IP列表
HostPort_list = [] #定义主机端口列表
HostGroup_list = [] #定义主机组列表
HostTemplate_list = [] #定义主机模板列表

class ZabbixApi:
    def __init__(self):  # 初始化信息 修改
        self.url = 'http://192.10.10.xx/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 GetHostInfo(self):  # 将excel文件中的所有主机信息存放到对应列表中
        wb = load_workbook('zabbix_host_add.xlsx')
        ws = wb.active
        for row in ws.iter_rows(min_row=min_line, max_col=6, max_row=max_line, values_only=True):
            HostName_list.append(row[0])
            Visible_HostName_list.append(row[1])
            HostIP_list.append(row[2])
            HostPort_list.append(row[3])
            HostGroup_list.append(row[4])
            HostTemplate_list.append(row[5])

    def CreateHost(self):  # 创建添加主机
        rows_number = max_line - min_line + 1

        for i in range(rows_number):

# 以下ID根据环境实际值修改
            if HostGroup_list[i] == 'zabbix_test1':
                GroupID = 18
            if HostGroup_list[i] == 'zabbix_test2':
                GroupID = 19
            if HostTemplate_list[i] == 'Template App Zabbix Server':
                TemplateID = 10047
            if HostTemplate_list[i] == 'Template Module Linux CPU by Zabbix agent':
                TemplateID = 10272

# 注意参数"interfaces"中所有必选项都要填,(dns不要忽略)否则会报错'data': 'Incorrect arguments passed to function.'
            data = {
                "jsonrpc": "2.0",
                "method": "host.create",
                "params": {
                    "host": HostName_list[i],
                    "name": Visible_HostName_list[i],
                    "groups": {
                        "name": HostGroup_list[i],
                        "groupid": GroupID
                    },
                    "interfaces": {
                        "main": 1,
                        "useip": 1,
                        "type": 1,
                        "dns": "",
                        "port": HostPort_list[i],
                        "ip": HostIP_list[i]
                    },
                    "templates": {
                        "host": HostTemplate_list[i],
                        "templateid": TemplateID
                    }
                },
                "auth": token,
                "id": 1
            }
            status = self.UrlRequest(data)
            if 'result' in status:
                print(f"创建主机-{i}: {HostName_list[i]} 成功!")
            else:
                print(f"创建主机-{i}: {HostName_list[i]} 失败!!!")
            if i == rows_number - 1:
                return "所有主机已创建完成!"


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

    zapi.GetHostInfo()
    info = zapi.CreateHost()
    print(info)

执行脚本后效果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zabbix 是一个企业级分布式开源监控解决方案。  Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。  Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。  Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。 本课程主要讲解以下方面: 1.  网络设备的监控,如 Dell R420、Juniper ssg5等。2.  Linux 和 Windows 服务器的监控。3.  应用服务的监控,如 httpd、nginx等。4.  Zabbix 代理的配置与使用以及 Zabbix 的多种告警方式。 注意:该课程,需要有一定的 zabbix 和 Linux 基础,建议您先把>和>看完,再看此套课程,这个是在它的基础上进行讲解的。                                                                   

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值