Hello Friends,

 

I am looking to implement tunneling in python and using "Paramiko" for
this..

Sending theTunneling script using Paramiko -Python.

 

It's facing some prob, hangs on running the script..output message it says
".. Missing Handlers". Plz let me know the corrections to be done in this
script to making tunneling successful (I hv hard-coded the jump server IP
address 10.64.116.34 and password - "Cisco123" in the script to test it
once). It's urgent, plz giv me solution ASAP!!

 

Thanks n regards,

Vinay

import select
import SocketServer
import sys
import paramiko
from threading import Thread
import time


class ForwardServer(SocketServer.ThreadingTCPServer):
    daemon_threads = True
    allow_reuse_address = True
    
class Handler (SocketServer.BaseRequestHandler):
    def handle(self):
        try:
            chan =self.ssh_transport.open_channel('direct-tcpip', 
(self.chain_host,self.chain_port), self.request.getpeername())
        except Exception, e:
            print('Incoming request to %s:%d failed: %s' % 
(self.chain_host,self.chain_port, repr(e)))
            return
        if chan is None:
            print('Incoming request to %s:%d was rejected by the SSH server.' % 
(self.chain_host,self.chain_port))
            return
        print('Connected! Tunnel open %r -> %r -> %r' % 
(self.request.getpeername(), chan.getpeername(), (self.chain_host, 
self.chain_port)))
        while True:
            r, w, x = select.select([self.request, chan],[], [])
            if self.request in r:
                data = self.request.recv(1024)
                if len(data) ==0:
                    break
                chan.send(data)
            if chan in r:
                data = chan.recv(1024)
                if len(data)== 0:
                    break
                self.request.send(data)
        chan.close()
        self.request.close()
        print('Tunnel closed from %r' % (self.request.getpeername(),))
        
class Tunnel():
    def __init__(self,ip='10.64.116.34'):
        self.c = paramiko.SSHClient()
        self.c.load_system_host_keys()
        self.c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.c.connect(ip, username='root', password='Cisco123')
        self.trans = self.c.get_transport()
        print "Inside Tunnel __init__"
        
    def startTunnel(self):
        class SubHandler(Handler):
            chain_host = '127.0.0.1'
            chain_port = 30001
            ssh_transport = self.c.get_transport()
            print "Inside startTunnel function Subhandler"
        def ThreadTunnel():
            self.t = ForwardServer(('127.0.0.1', 30001), SubHandler)
            self.t.serve_forever()
            print "Inside ThreadTunnel-function "
        Thread(target=ThreadTunnel).start()
        print "printing after Thread start "
    def stopTunnel(self):
        print "Before stopping tunnel "
        t.shutdown()
        self.trans.close()
        self.c.close()
        self.t.socket.close()
if __name__=="__main__":
    t= Tunnel()
    t.startTunnel()
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to