big change n parsing logic passing
This commit is contained in:
parent
ca06237c3c
commit
56906b9ebc
17 changed files with 570 additions and 127 deletions
|
|
@ -13,37 +13,43 @@ from service import Service
|
|||
|
||||
|
||||
class HttpService(Service):
|
||||
def __init__(self, parser, log, **kwargs):
|
||||
super(Service, self).__init__(parser)
|
||||
if "string" in kwargs:
|
||||
self.string = kwargs["string"]
|
||||
else:
|
||||
log.w("There is no string set to match")
|
||||
raise
|
||||
if "method" in kwargs:
|
||||
self.method = kwargs["method"]
|
||||
else:
|
||||
self.method = "get"
|
||||
if "params" in kwargs:
|
||||
def __init__(self, **kwargs):
|
||||
super(HttpService, self).__init__(**kwargs)
|
||||
|
||||
args = self.get_arguments()
|
||||
|
||||
self.method = "get"
|
||||
if "method" in args:
|
||||
self.method = args["method"]
|
||||
|
||||
self.params = None
|
||||
if "params" in args:
|
||||
self.params = kwargs["params"]
|
||||
if "path" in kwargs:
|
||||
|
||||
self.path = "/"
|
||||
if "path" in args:
|
||||
self.path = kwargs["path"]
|
||||
else:
|
||||
self.path = "/"
|
||||
if "port" in kwargs:
|
||||
|
||||
self.port = "80"
|
||||
if "port" in args:
|
||||
self.port = kwargs["port"]
|
||||
else:
|
||||
self.port = "80"
|
||||
if "protocol" in kwargs:
|
||||
|
||||
self.protocol = "http"
|
||||
if "protocol" in args:
|
||||
self.protocol = kwargs["protocol"]
|
||||
else:
|
||||
self.protocol = "http"
|
||||
|
||||
def needs_arguments(self):
|
||||
return True
|
||||
|
||||
|
||||
def execute(self):
|
||||
params = urllib.urlencode(self.params)
|
||||
if self.method is "get":
|
||||
f = urllib.urlopen(self.protocol + "://" + self.host + ":" + self.port + self.path + "?%s" % params)
|
||||
f = urllib.urlopen(self.protocol + "://" + self._host + ":" + self.port + self.path + "?%s" % params)
|
||||
elif self.method is "post":
|
||||
f = urllib.urlopen(self.protocol + "://" + self.host + ":" + self.port + self.path, params)
|
||||
f = urllib.urlopen(self.protocol + "://" + self._host + ":" + self.port + self.path, params)
|
||||
|
||||
#print f.read()
|
||||
#print f.read()
|
||||
|
||||
def create(**kwargs):
|
||||
return HttpService(**kwargs)
|
||||
|
|
@ -2,4 +2,13 @@
|
|||
The ping service in pure Python.
|
||||
"""
|
||||
|
||||
# http://code.activestate.com/recipes/409689-icmplib-library-for-creating-and-reading-icmp-pack/
|
||||
# http://code.activestate.com/recipes/409689-icmplib-library-for-creating-and-reading-icmp-pack/
|
||||
from service import Service
|
||||
|
||||
class PingService(Service):
|
||||
def __init__(self, **kwargs):
|
||||
super(PingService, self).__init__(**kwargs)
|
||||
|
||||
|
||||
def create(self, **kwargs):
|
||||
return PingService(**kwargs)
|
||||
|
|
|
|||
|
|
@ -1,9 +1,103 @@
|
|||
|
||||
KEY_PARSER = "parser"
|
||||
KEY_COMMENT = "comment"
|
||||
KEY_THRESHOLD = "threshold"
|
||||
KEY_FAILS = "fails"
|
||||
KEY_PERIODS = "periods"
|
||||
KEY_ARGS = "args"
|
||||
|
||||
class Service:
|
||||
def __init__(self, host, parser):
|
||||
self.host = host
|
||||
self.parser = parser
|
||||
def __init__(self, **kwargs):
|
||||
|
||||
self._args = {}
|
||||
if KEY_ARGS in kwargs:
|
||||
self.add_arguments(kwargs[KEY_ARGS])
|
||||
elif self.needs_arguments():
|
||||
raise Exception("Error: needs arguments but none provided!")
|
||||
|
||||
self._host = None
|
||||
|
||||
self._parser = []
|
||||
if KEY_PARSER in kwargs:
|
||||
self.add_parser(kwargs[KEY_PARSER])
|
||||
|
||||
self._comment = None
|
||||
if KEY_COMMENT in kwargs:
|
||||
self._comment = kwargs[KEY_COMMENT]
|
||||
|
||||
self._threshold = 0
|
||||
if KEY_THRESHOLD in kwargs:
|
||||
self._threshold = kwargs[KEY_THRESHOLD]
|
||||
|
||||
self._fails = {}
|
||||
if KEY_FAILS in kwargs:
|
||||
self.put_fails(kwargs[KEY_FAILS])
|
||||
|
||||
self._periods = []
|
||||
if KEY_PERIODS in kwargs:
|
||||
self.addPeriods(kwargs[KEY_PERIODS])
|
||||
|
||||
self.errorcode = 0
|
||||
self.errormessage = "No Error!"
|
||||
|
||||
def add_arguments(self, args):
|
||||
for key, val in args.items():
|
||||
self._args[key] = val
|
||||
|
||||
def add_argument(self, key, value):
|
||||
self._args[key] = value
|
||||
|
||||
def get_arguments(self):
|
||||
return self._args
|
||||
|
||||
def add_period(self, period):
|
||||
if period is not None:
|
||||
if isinstance(period, list):
|
||||
self._periods.extend(period)
|
||||
else:
|
||||
self._periods.append(period)
|
||||
|
||||
def get_periods(self):
|
||||
return self._periods
|
||||
|
||||
def get_fails(self):
|
||||
return self._fails
|
||||
|
||||
def has_fail(self, fail):
|
||||
return fail in self.get_fails()
|
||||
|
||||
def put_fail(self, key, value):
|
||||
self._fails[key] = value
|
||||
|
||||
def put_fails(self, fails):
|
||||
for key, value in fails.items():
|
||||
self.put_fail(key, value)
|
||||
|
||||
def get_threshold(self):
|
||||
return self._threshold
|
||||
|
||||
def get_comment(self):
|
||||
return self._comment
|
||||
|
||||
def set_host(self, host):
|
||||
self._host = host
|
||||
|
||||
def get_host(self):
|
||||
return self._host
|
||||
|
||||
def get_parser(self):
|
||||
return self._parser
|
||||
|
||||
|
||||
def add_parser(self, parser):
|
||||
if parser is not None:
|
||||
if isinstance(parser, list):
|
||||
self._parser.extend(parser)
|
||||
else:
|
||||
self._parser.append(parser)
|
||||
|
||||
def needs_arguments(self):
|
||||
return False
|
||||
|
||||
def _execute(self):
|
||||
self.pre_execute()
|
||||
|
|
@ -18,7 +112,10 @@ class Service:
|
|||
pass
|
||||
|
||||
def parse_result(self, executionResult):
|
||||
return self.parser._parse(executionResult)
|
||||
result = []
|
||||
for parser in self.get_parser():
|
||||
result.append(self._parser._parse(executionResult))
|
||||
|
||||
|
||||
def handle_result(self, parseResult):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -6,13 +6,21 @@ from service import Service
|
|||
|
||||
|
||||
class ShellService(Service):
|
||||
def __init__(self, parser, log, **kwargs):
|
||||
super(Service, self).__init__(parser)
|
||||
if "command" in kwargs:
|
||||
self.command = kwargs["command"]
|
||||
def __init__(self, **kwargs):
|
||||
super(ShellService, self).__init__(**kwargs)
|
||||
|
||||
args = self.get_arguments()
|
||||
if "command" in args:
|
||||
self.command = args["command"]
|
||||
else:
|
||||
log.w("There is no command")
|
||||
raise
|
||||
raise Exception("There is no command argument")
|
||||
|
||||
def needs_arguments(self):
|
||||
return True
|
||||
|
||||
|
||||
def execute(self):
|
||||
self.command.call()
|
||||
self.command.call()
|
||||
|
||||
def create(**kwargs):
|
||||
return ShellService(**kwargs)
|
||||
|
|
@ -2,45 +2,56 @@
|
|||
The snmpget service in pure Python.
|
||||
"""
|
||||
|
||||
from pysnmp.entity.rfc3413.oneliner import cmdgen
|
||||
#from pysnmp.entity.rfc3413.oneliner import cmdgen
|
||||
from service import Service
|
||||
from Cython.Compiler.Naming import kwds_cname
|
||||
from wx.lib.pubsub.core import kwargs
|
||||
|
||||
|
||||
class SnmpgetService(Service):
|
||||
def __init__(self, parser, log, **kwargs):
|
||||
super(Service, self).__init__(parser)
|
||||
if "community" in kwargs:
|
||||
self.community = kwargs["community"]
|
||||
def __init__(self, **kwargs):
|
||||
super(SnmpgetService, self).__init__(**kwargs)
|
||||
|
||||
args = self.get_arguments()
|
||||
|
||||
if "community" in args:
|
||||
self.community = args["community"]
|
||||
else:
|
||||
log.w("There is no community")
|
||||
raise
|
||||
if "oid" in kwargs:
|
||||
self.oid = kwargs["oid"]
|
||||
raise Exception("There is no community")
|
||||
|
||||
if "oid" in args:
|
||||
self.oid = args["oid"]
|
||||
else:
|
||||
log.w("There is no oid")
|
||||
raise
|
||||
if "port" in kwargs:
|
||||
self.port = kwargs["port"]
|
||||
else:
|
||||
self.port = "161"
|
||||
raise Exception("There is no oid")
|
||||
|
||||
self.port = "161"
|
||||
if "port" in args:
|
||||
self.port = args["port"]
|
||||
|
||||
def needs_arguments(self):
|
||||
return True
|
||||
|
||||
def execute(self):
|
||||
cmdGen = cmdgen.CommandGenerator()
|
||||
pass
|
||||
#cmdGen = cmdgen.CommandGenerator()
|
||||
|
||||
errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
|
||||
cmdgen.CommunityData(self.community),
|
||||
cmdgen.UdpTransportTarget((self.host, self.port)),
|
||||
cmdgen.MibVariable(self.oid)
|
||||
)
|
||||
|
||||
if errorIndication:
|
||||
print(errorIndication)
|
||||
else:
|
||||
if errorStatus:
|
||||
print('%s at %s' % (
|
||||
errorStatus.prettyPrint(),
|
||||
errorIndex and varBinds[int(errorIndex) - 1] or '?'
|
||||
))
|
||||
else:
|
||||
for name, val in varBinds:
|
||||
print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
|
||||
#errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
|
||||
# cmdgen.CommunityData(self.community),
|
||||
# cmdgen.UdpTransportTarget((self._host, self.port)),
|
||||
# cmdgen.MibVariable(self.oid)
|
||||
#)
|
||||
|
||||
#if errorIndication:
|
||||
# print(errorIndication)
|
||||
#else:
|
||||
# if errorStatus:
|
||||
# print('%s at %s' % (
|
||||
# errorStatus.prettyPrint(),
|
||||
# errorIndex and varBinds[int(errorIndex) - 1] or '?'
|
||||
# ))
|
||||
# else:
|
||||
# for name, val in varBinds:
|
||||
# print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
|
||||
|
||||
def create(**kargs):
|
||||
return SnmpgetService(**kwargs)
|
||||
|
|
@ -11,14 +11,18 @@ from service import Service
|
|||
|
||||
|
||||
class SshService(Service):
|
||||
def __init__(self, parser, log, **kwargs):
|
||||
super(Service, self).__init__(parser)
|
||||
if "command" in kwargs:
|
||||
self.command = kwargs["command"]
|
||||
def __init__(self, **kwargs):
|
||||
super(SshService, self).__init__(**kwargs)
|
||||
|
||||
args = self.get_arguments()
|
||||
if "command" in args:
|
||||
self.command = args["command"]
|
||||
else:
|
||||
log.w("There is no command")
|
||||
raise
|
||||
|
||||
raise Exception("There is no command argument")
|
||||
|
||||
def needs_arguments(self):
|
||||
return True
|
||||
|
||||
def execute(self):
|
||||
path = os.path.join(os.environ['HOME'], '.ssh', 'id_rsa')
|
||||
key = paramiko.RSAKey.from_private_key_file(path)
|
||||
|
|
@ -35,7 +39,9 @@ class SshService(Service):
|
|||
print '... ' + line.strip('\n')
|
||||
client.close()
|
||||
|
||||
|
||||
def create(**kwargs):
|
||||
return SshService(**kwargs)
|
||||
|
||||
# def main():
|
||||
# # service = SshService(parser, log, command='uptime')
|
||||
# return
|
||||
|
|
|
|||
|
|
@ -10,13 +10,18 @@ from service import Service
|
|||
|
||||
|
||||
class TcpconnectService(Service):
|
||||
def __init__(self, parser, log, **kwargs):
|
||||
super(Service, self).__init__(parser)
|
||||
if "port" in kwargs:
|
||||
self.port = kwargs["port"]
|
||||
def __init__(self, **kwargs):
|
||||
super(TcpconnectService, self).__init__(**kwargs)
|
||||
|
||||
args = self.get_arguments()
|
||||
if "port" in args:
|
||||
self.port = args["port"]
|
||||
else:
|
||||
log.w("There is no port set")
|
||||
raise
|
||||
raise Exception("There is no port set")
|
||||
|
||||
|
||||
def needs_arguments(self):
|
||||
return True
|
||||
|
||||
def execute(self, log):
|
||||
try:
|
||||
|
|
@ -32,4 +37,7 @@ class TcpconnectService(Service):
|
|||
self.errorcode = 2
|
||||
|
||||
sock.close()
|
||||
return
|
||||
return
|
||||
|
||||
def create(**kwargs):
|
||||
return TcpconnectService(**kwargs)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue