-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlibs.py
More file actions
39 lines (37 loc) · 1.38 KB
/
libs.py
File metadata and controls
39 lines (37 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from easysnmp import Session
from pysnmp.carrier.asyncore.dispatch import AsyncoreDispatcher
from pysnmp.carrier.asyncore.dgram import udp
import os
import signal
#PRINTER IP
session = Session(hostname='192.168.1.70', community='public', version=2)
class trap:
#Callback function fro SNMP Trap
def cbFun(self, transportDispatcher, transportDomain, transportAddress, wholeMsg):
os.kill(os.getpid(), signal.SIGUSR1)
#SNMP Trap init setup
def __init__(self):
transportDispatcher = AsyncoreDispatcher()
transportDispatcher.registerRecvCbFun(self.cbFun)
transportDispatcher.registerTransport(udp.domainName, udp.UdpSocketTransport().openServerMode(('192.168.1.111', 162))) #RASPBERRY / PC IP ADRESS
transportDispatcher.jobStarted(1)
try:
transportDispatcher.runDispatcher()
except:
transportDispatcher.closeDispatcher()
raise
class counter():
def __init__(self, snmp):
self.snmp = snmp
self.previous = self.get_counter()
#Read snmp value
def get_counter(self):
count = int(session.get(self.snmp).value)
return count
#Difference in values from last reset
def delta(self):
delt = self.get_counter() - self.previous
return delt
#Reset counter
def job_reset(self):
self.previous = self.get_counter()