管理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)