From 88b77d2bedda3b08eb55ef163de577e775c6bb26 Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Mon, 26 Mar 2012 15:18:29 +1100 Subject: [PATCH] Add an experimental ssh monitoring script. Signed-off-by: Angus Salkeld --- tools/experimental_ssh_eventlet.py | 60 ++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 tools/experimental_ssh_eventlet.py diff --git a/tools/experimental_ssh_eventlet.py b/tools/experimental_ssh_eventlet.py new file mode 100755 index 000000000..30c556f02 --- /dev/null +++ b/tools/experimental_ssh_eventlet.py @@ -0,0 +1,60 @@ +#!/usr/bin/python + +import eventlet +from eventlet.green import socket +import libssh2 +import time +import os +import random + + +def monitor(hostname, username, id): + + print '%s %s %d' % (hostname, username, id) + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.connect((hostname, 22)) + + session = libssh2.Session() + started = False + while not started: + try: + session.startup(sock) + started = True + except: + eventlet.sleep(1) + session.userauth_publickey_fromfile( + username, + os.path.expanduser('~/.ssh/id_rsa.pub'), + os.path.expanduser('~/.ssh/id_rsa'), + '') + + while True: + sl = random.randint(1, 20) + eventlet.sleep(sl) + channel = session.channel() + channel.execute('uname -a') + + stdout = [] + #stderr = [] + + while not channel.eof: + data = channel.read(1024) + if data: + stdout.append(data) + + #data = channel.read(1024, libssh2.STDERR) + #if data: + # stderr.append(data) + + print '%d %d %s' % (id, sl, ''.join(stdout)) + #print ''.join(stderr) + + +pool = eventlet.GreenPool() +i = 1 +while True: + pool.spawn_n(monitor, '192.168.122.238', 'root', i) + i = i + 1 + if i > 800: break + +pool.waitall()