管理prtg服务器的python模块

prtg的Python项目详细描述


prtg

管理prtg服务器的python模块

先决条件:

  • BS4(美化组)
  • 请求
  • lxml

目前为止只在Python3.5.2上测试过。确实适用于Python2.7,但没有经过广泛测试。

这是一个python模块,用于从cli管理prtg服务器或自动进行更改。它对于编写对prtg对象的更改脚本非常有用。

prtg_api不再使用配置文件。相反,在启动prtg_api类时需要输入prtg参数。这种改变是为了让它以更灵活的方式使用,或者管理多个PRTG实例,如果您愿意,您仍然可以为参数设置本地配置文件。启动prtg_api类的参数为:

prtg_api(host,user,passhash,protocol='https',port='443',rootid=0)

初始化后,将下载整个设备树,并将每个探测器、组、设备、传感器和通道作为可修改对象提供。从主对象(在示例中称为prtg)可以使用prtg.allprobes、prtg.allgroups、prtg.alldevices和prtg.allsensors属性访问树中的所有对象。默认情况下,通道不可用,必须运行sensor.get_channels()以获取该传感器的子通道。

您还可以将传感器树的根设置为一个组,而不是prtg的根。添加此项是为了允许在PRTG服务器可能具有多个对象的位置下载部分传感器树,或者为具有受限权限的用户提供访问权限。

当您访问树下更远的对象时,您只能访问该对象的直接子对象。例如,此示例将显示在allgroups数组的第4组中的设备:

from prtg import prtg_api

prtg = prtg_api('192.168.1.1','prtgadmin','0000000000')

prtg.allgroups[3].devices

探测和组对象可以将组和设备作为子对象,设备对象将传感器作为子对象,传感器可以将通道作为子对象。

from prtg import prtg_api

prtg = prtg_api('192.168.1.1','prtgadmin','0000000000')

probeobject = prtg.allprobes[0]
groups = probeobject.groups
devices = probeobject.devices

deviceobject = devices[0]
sensors = deviceobject.sensors

sensorobject = sensors[0]
sensorobject.get_channels()

channel = sensorobject.channels[0]

所有对象上的当前方法和参数(*=必需)包括:

  • 重命名()
  • 暂停(持续时间=0,消息='')(在频道上暂停和继续将更改父传感器)
  • resume()
  • 克隆(newname=',newplaceid='
  • 删除(确认=真)(不能删除根对象或频道)
  • 刷新()
  • 设置属性(名称*,值*)
  • 获取属性(名称*)
  • 设置附加参数(参数*)(用于自定义脚本传感器)
  • 设置间隔(间隔*)
  • 设置主机(主机*)(IP地址或主机名)
  • 按ID(ID)搜索
  • 添加标记(['tag1','tag2']*,清除旧的=false)

即将到来:

  • 移动

如果您正在进行一些小的更改,例如暂停、继续、重命名;本地数据将随您的操作而更新。如果要进行较大的更改,则应在每次更改后刷新数据。如果您刷新主prtg对象,它将刷新所有内容,否则您只需刷新树下的一个对象,仅刷新部分本地数据。要刷新对象,请调用.refresh()方法。

StIy属性方法是非常强大和灵活的。您可以为对象更改任何可以在Web UI的“对象设置”选项卡中更改的内容。我将添加更常用的设置作为单独的方法。您可以使用get_property方法测试属性的名称:

from prtg import prtg_api

prtg = prtg_api('192.168.1.1','prtgadmin','0000000000')
prtg.get_property(name='location')
#returns the location and sets prtg.location to the result.

prtg.set_property(name='location',value='Canada')

某些操作(如恢复)会出现延迟,因此应在适当的情况下添加时间延迟。

示例用法:

import time
from prtg import prtg_api

prtg = prtg_api('192.168.1.1','prtgadmin','0000000000')

for device in prtg.alldevices:
  if device.id == "1234":
    deviceobj = device

deviceobj.pause()
deviceobj.clone(newname="cloned device",newplaceid="2468")

time.sleep(10)

prtg.refresh()

for device in prtg.alldevices:
  if device.name = "cloned device":
    device.resume()

prtg_api类可以与设置为根组、探测或组的根id一起使用。如果你想管理一个设备或传感器,而不想下载整个传感器树来遍历结果;你可以使用prtg_设备和prtg_传感器类。例如:

host = '192.168.1.1'
port = '80'
user = 'prtgadmin'
passhash = '0000000'
protocol = 'http'
deviceid = '2025'

device = prtg_device(host,port,user,passhash,protocol,deviceid)

sensorid = '2123'

sensor = prtg_sensor(host,port,user,passhash,protocol,sensorid)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android Java在活动之间传递值   java当实体中存在关系时,我可以只使用实体的id而不是从DB中获取实体吗?   bouncycastle Java运行SSHD服务器错误未找到类定义   java SWT/Swing>Threads n'Hell   java多线程数据库读取   java如何在Eclipse中轻松提交Git   java在哪里可以找到字符串相等比较的一组特定排序规则?   无连接表的java单向单域关系   java扩展三角文件   java spring。杰克逊。序列化。failonemptybeans   java无法加载请求的类:oracle。jdbc。驾驶员OracleDriver   java通过数组进行索引循环并打印出元素?   找不到eclipse错误类中的java提交Hadoop作业   Java:随机设定种子   java片段、异步任务和侦听器   java在分号后使用{}