added some testing code to the snmpget builtin and renamed service to services/

This commit is contained in:
Johannes Findeisen 2013-06-10 04:14:53 +02:00
commit 4b0238c515
8 changed files with 58 additions and 0 deletions

View file

@ -1,54 +0,0 @@
"""
The http service.
This is for checking the availability and output of HTTP services. Basic HTTP
content could be fetched and compared.HTTPS is not validating the server certificate!
This should just return 0 on success and NOT 0 on error. Just to make internals generic
to just report this code and not use a parser.
"""
import urllib
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")
if "method" in kwargs:
self.method = kwargs["method"]
else:
self.method = "get"
if "params" in kwargs:
self.params = kwargs["params"]
if "path" in kwargs:
self.path = kwargs["path"]
else:
self.path = "/"
if "port" in kwargs:
self.port = kwargs["port"]
else:
self.port = "80"
if "protocol" in kwargs:
self.protocol = kwargs["protocol"]
else:
self.protocol = "http"
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)
elif self.method is "post":
f = urllib.urlopen(self.protocol + "://" + self.host + ":" + self.port + self.path, params)
#print f.read()

View file

@ -1,5 +0,0 @@
"""
The ping service in pure Python.
"""
# http://code.activestate.com/recipes/409689-icmplib-library-for-creating-and-reading-icmp-pack/

View file

@ -1,24 +0,0 @@
class Service:
def __init__(self, host, parser):
self.host = host
self.parser = parser
self.errorcode = 0
self.errormessage = "No Error!"
def _execute(self):
self.pre_execute()
executionResult = self.execute()
parseResult = self.parse_result(executionResult)
self.handle_result(parseResult)
def execute(self):
pass
def pre_execute(self):
pass
def parse_result(self, executionResult):
return self.parser._parse(executionResult)
def handle_result(self, parseResult):
pass

View file

@ -1,17 +0,0 @@
"""
The shell service. This is for executing local shell commands and retrieve the output.
"""
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"]
else:
log.w("There is no command")
def execute(self):
self.command.call()

View file

@ -1,43 +0,0 @@
"""
The ssh service This is for executing remote shell commands and retrieve the output.
This service is using paramiko (http://www.lag.net/paramiko/).
"""
import paramiko
import pprint
import os
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"]
else:
log.w("There is no command")
def execute(self):
path = os.path.join(os.environ['HOME'], '.ssh', 'id_rsa')
key = paramiko.RSAKey.from_private_key_file(path)
client = paramiko.SSHClient()
client.get_host_keys().add('hanez.org', 'ssh-rsa', key)
pprint.pprint(client._host_keys)
client.connect('hanez.org', username='hanez')
#self.command.call() ist dann das:
stdin, stdout, stderr = client.exec_command('ls')
for line in stdout:
print '... ' + line.strip('\n')
client.close()
# def main():
# # service = SshService(parser, log, command='uptime')
# return
#
# if __name__ == "__main__":
# main()

View file

@ -1,35 +0,0 @@
"""
The tcpconnect service. This is to check if a service on a specific port is reachable.
This should just return 0 on success and NOT 0 on error. Just to make internals generic to just report this code and
not use a parser.
"""
import socket
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"]
else:
log.w("There is no port set")
def execute(self, log):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
log.w("%s\n" % msg[1])
self.errorcode = 1
try:
sock.connect((self.host, self.port))
except socket.error, msg:
log.w("%s\n" % msg[1])
self.errorcode = 2
sock.close()
return