added some code to the service classes; no working code; mostly boilerplate...
This commit is contained in:
parent
d9bc34f704
commit
e9be20ecf0
5 changed files with 117 additions and 35 deletions
|
|
@ -1,5 +1,8 @@
|
||||||
"""
|
"""
|
||||||
The htmlcontent service in pure Python. STUPID NAME!!!
|
The htmlcontent service in pure Python. STUPID NAME!!!
|
||||||
|
|
||||||
|
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.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# http://pycurl.sourceforge.net/ --- seems old...
|
# http://pycurl.sourceforge.net/ --- seems old...
|
||||||
|
|
@ -7,4 +10,42 @@ The htmlcontent service in pure Python. STUPID NAME!!!
|
||||||
#
|
#
|
||||||
# maybe better: http://docs.python.org/2/library/urllib.html
|
# maybe better: http://docs.python.org/2/library/urllib.html
|
||||||
#
|
#
|
||||||
# or look at tcpconnect.py! could be useful to.
|
# or look at tcpconnect.py! could be useful to.
|
||||||
|
|
||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
from service import Service
|
||||||
|
|
||||||
|
|
||||||
|
class HtmlcontentService(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")
|
||||||
|
|
||||||
|
def execute(self):
|
||||||
|
try:
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
except socket.error, msg:
|
||||||
|
sys.stderr.write("[ERROR] %s\n" % msg[1])
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
sock.connect((self.host, self.port))
|
||||||
|
except socket.error, msg:
|
||||||
|
sys.stderr.write("[ERROR] %s\n" % msg[1])
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
sock.send("GET %s HTTP/1.0\r\nHost: %s\r\n\r\n" % (self.path, self.host))
|
||||||
|
|
||||||
|
data = sock.recv(1024)
|
||||||
|
string = ""
|
||||||
|
while len(data):
|
||||||
|
string = string + data
|
||||||
|
data = sock.recv(1024)
|
||||||
|
sock.close()
|
||||||
|
#print string
|
||||||
|
# make substring in string compare here. regex or so...
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
class Service:
|
class Service:
|
||||||
def __init__(self, parser):
|
def __init__(self, host, parser):
|
||||||
|
self.host = host
|
||||||
self.parser = parser
|
self.parser = parser
|
||||||
|
self.errorcode = 0
|
||||||
|
|
||||||
def _execute(self):
|
def _execute(self):
|
||||||
self.pre_execute()
|
self.pre_execute()
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
"""
|
"""
|
||||||
The shell service. This is for executing services as shell commands
|
The shell service. This is for executing local shell commands and retrieve the output.
|
||||||
and don't use a builtin function. This is useful to be free to do what you want.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from service import Service
|
from service import Service
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,43 @@
|
||||||
"""
|
"""
|
||||||
The ssh service in pure Python.
|
The ssh service This is for executing remote shell commands and retrieve the output.
|
||||||
|
|
||||||
|
This service is using paramiko (http://www.lag.net/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()
|
||||||
|
|
@ -1,33 +1,35 @@
|
||||||
"""
|
"""
|
||||||
The tcpconnect service in pure Python.
|
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
|
import socket
|
||||||
import sys
|
from service import Service
|
||||||
|
|
||||||
HOST = 'linspector.org'
|
|
||||||
GET = '/index.html'
|
|
||||||
PORT = 80
|
|
||||||
|
|
||||||
try:
|
class TcpconnectService(Service):
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
def __init__(self, parser, log, **kwargs):
|
||||||
except socket.error, msg:
|
super(Service, self).__init__(parser)
|
||||||
sys.stderr.write("[ERROR] %s\n" % msg[1])
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
try:
|
if "port" in kwargs:
|
||||||
sock.connect((HOST, PORT))
|
self.port = kwargs["port"]
|
||||||
except socket.error, msg:
|
else:
|
||||||
sys.stderr.write("[ERROR] %s\n" % msg[1])
|
log.w("There is no port set")
|
||||||
sys.exit(2)
|
|
||||||
|
|
||||||
sock.send("GET %s HTTP/1.0\r\nHost: %s\r\n\r\n" % (GET, HOST))
|
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
|
||||||
|
|
||||||
data = sock.recv(1024)
|
try:
|
||||||
string = ""
|
sock.connect((self.host, self.port))
|
||||||
while len(data):
|
except socket.error, msg:
|
||||||
string = string + data
|
log.w("%s\n" % msg[1])
|
||||||
data = sock.recv(1024)
|
self.errorcode = 2
|
||||||
sock.close()
|
|
||||||
|
|
||||||
print string
|
sock.close()
|
||||||
|
return
|
||||||
Loading…
Add table
Add a link
Reference in a new issue