【问题标题】:Script on python for Zabbix LLD discovery rule用于 Zabbix LLD 发现规则的 python 脚本
【发布时间】:2021-04-06 03:48:44
【问题描述】:

我需要编写一个python脚本来监控sudoers文件的变化。我想使用 LLD Discovery 规则在 Zabbix 中实现这一点。据我了解,我需要在输出中有 JSON 格式的数据。因为我只是在学习如何编写脚本,所以我遇到了一个问题。我不知道如何实现这一点。我寻求帮助。这是我的脚本。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

file_path = ["/etc/sudoers",
"/etc/sudoers.d/file1",
"/etc/sudoers.d/file2"]
import os.path
import json
for i in file_path:
        a = os.path.isfile(i)
        if a == True:
            print(i)

【问题讨论】:

  • JSON 文件需要是什么样的?
  • 您能否发布预期的JSON 输出示例? Python 在标准库中有一个json 模块。

标签: python zabbix


【解决方案1】:

JSON 是一种与 Python dict 非常相似的格式。 我的建议是创建一个 Python 字典,以 JSON 格式表示您希望拥有的数据。 然后,获取该 dict 对象并将其作为 JSON 字符串返回,以满足您的任何需要。这是一个例子:

file_path = ['/etc/sudoers', '/etc/sudoers.d/file1', '/etc/sudoers.d/file2']
import os.path
import json
json_data = {}
for path in file_path:
    json_data[path] = os.path.isfile(path)

>>> json.dumps(json_data)
'{"/etc/sudoers": false, "/etc/sudoers.d/file1": false, "/etc/sudoers.d/file2": false}'

【讨论】:

  • 我需要这样的输出 { "data":[ { "{#FILE_PATH}":"/etc/sudoers" }, { "{#FILE_PATH}":"/etc/sudoers .d/file1" }, { "{#FILE_PATH}":"/etc/sudoers.d/file2" } ] }
  • 这个想法是让 zabbix 只检查那些存在的文件。为此,我编写了条件 if a == True: print (i) 以便它只打印存在的文件。
【解决方案2】:

也许有人会派上用场

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import os.path
list_a = ["/etc/sudoers",
"/etc/sudoers.d/file1",
"/etc/sudoers.d/file2"]
list_b = []

for a in list_a:
        b = os.path.isfile(a)
        if b == True:
            dict_files = {}
            dict_files["#FILE_PATH"] = (a)
            list_b.append(dict_files)
            z = json.dumps(list_b)

print(z)

谢谢大家的帮助。感谢我的同事 Alex 的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多