Initial commit
This commit is contained in:
132
sc200-smart-alarm-set.py
Executable file
132
sc200-smart-alarm-set.py
Executable file
@@ -0,0 +1,132 @@
|
||||
#!/usr/bin/python3
|
||||
from netaddr import IPNetwork
|
||||
#from netaddr import IPAddress
|
||||
from xmlrpc.client import ServerProxy
|
||||
import socket
|
||||
import queue
|
||||
import threading
|
||||
import sys
|
||||
import http.client
|
||||
|
||||
WORKERS = 10
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
Nets = [
|
||||
'10.250.48.0/27',
|
||||
'10.250.48.32/27',
|
||||
'10.250.48.64/27',
|
||||
'10.250.48.96/27',
|
||||
'10.250.48.128/27',
|
||||
'10.250.48.160/27',
|
||||
'10.250.49.0/27',
|
||||
'10.250.49.32/27',
|
||||
'10.250.49.64/27',
|
||||
'10.250.49.128/27',
|
||||
'10.250.49.160/27',
|
||||
'10.250.50.0/27',
|
||||
'10.250.50.32/27',
|
||||
'10.250.50.65/27',
|
||||
'10.250.50.96/27',
|
||||
'10.250.50.128/27',
|
||||
'10.250.50.160/27',
|
||||
'10.250.50.192/27',
|
||||
'10.250.50.224/27',
|
||||
'10.250.51.0/27',
|
||||
'10.250.51.32/27',
|
||||
'10.250.51.64/27',
|
||||
'10.250.51.96/27',
|
||||
'10.250.51.128/27',
|
||||
'10.250.52.0/27',
|
||||
'10.250.52.32/27',
|
||||
'10.250.52.64/27',
|
||||
'10.250.52.96/27',
|
||||
'10.250.52.128/27',
|
||||
'10.250.52.160/27',
|
||||
'10.250.52.192/27'
|
||||
]
|
||||
else:
|
||||
Nets = sys.argv[1:]
|
||||
|
||||
|
||||
def GetStatusCode(host, path="/"):
|
||||
try:
|
||||
conn = http.client.HTTPConnection(host)
|
||||
conn.request("GET", path)
|
||||
return conn.getresponse().status
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
class Worker(threading.Thread):
|
||||
|
||||
def __init__(self, IPs):
|
||||
self.__IPs = IPs
|
||||
self.parent = threading.current_thread()
|
||||
threading.Thread.__init__(self)
|
||||
|
||||
def run(self):
|
||||
retry = False
|
||||
socket.setdefaulttimeout(5)
|
||||
while 1:
|
||||
IP = self.__IPs.get()
|
||||
|
||||
if IP is None:
|
||||
break
|
||||
|
||||
if GetStatusCode(str(IP), "/languages") == 200:
|
||||
print((self.getName() + ' processing: ' + str(IP)))
|
||||
while True:
|
||||
proxy = ServerProxy('http://%s/xmlrpc' % IP)
|
||||
try:
|
||||
Values = proxy.db.set({
|
||||
'Smart-Alarm-Name:1': 'Solar',
|
||||
'Smart-Alarm-Severity:1': 3,
|
||||
'Smart-Alarm-DO-Mapping-A:1': 1,
|
||||
'Smart-Alarm-Send-Trap:1': 1,
|
||||
'Source-Alarm-Status:1': 1,
|
||||
'Source-Alarm-Mapping:1': 1,
|
||||
'Source-Schedule-Mapping:1': 1,
|
||||
'Source-Schedule-Status:1': 1,
|
||||
'Smart-Alarm-Operator:1': 0,
|
||||
'Source-Schedule-First-Date-Time:1': 1481673600,
|
||||
'Source-Schedule-Duration:1': 480,
|
||||
'Alarm-Severity': 5,
|
||||
'Alarm-DO-Mapping-A': 0,
|
||||
'Alarm-Send-Trap': 0,
|
||||
'Low-Float-Threshold': 50
|
||||
})
|
||||
except socket.timeout:
|
||||
retry = True
|
||||
continue
|
||||
|
||||
if retry:
|
||||
retry = False
|
||||
else:
|
||||
break
|
||||
print((self.getName() + ':' + str(IP) + str(Values)))
|
||||
else:
|
||||
print((self.getName() + ' skipping: ' + str(IP)))
|
||||
|
||||
|
||||
IPs = queue.Queue(0)
|
||||
|
||||
for i in range(WORKERS):
|
||||
Worker(IPs).start()
|
||||
|
||||
for SubNet in Nets:
|
||||
Net = IPNetwork(SubNet)
|
||||
|
||||
for IP in Net:
|
||||
if ((IP != Net.network and IP != Net.broadcast) or
|
||||
Net.broadcast is None):
|
||||
#print(('Queued: ' + str(IP)))
|
||||
IPs.put(IP)
|
||||
|
||||
for i in range(WORKERS):
|
||||
IPs.put(None)
|
||||
|
||||
if threading.current_thread() is not threading.main_thread():
|
||||
sys.exit(0)
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
Reference in New Issue
Block a user