[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sshproxy-dev] Changes to sshproxy/SSHproxy/client/console.py
From: |
David Guerizec |
Subject: |
[sshproxy-dev] Changes to sshproxy/SSHproxy/client/console.py |
Date: |
Tue, 02 Aug 2005 09:25:45 -0400 |
Index: sshproxy/SSHproxy/client/console.py
diff -u sshproxy/SSHproxy/client/console.py:1.1
sshproxy/SSHproxy/client/console.py:1.2
--- sshproxy/SSHproxy/client/console.py:1.1 Thu Jul 21 09:43:36 2005
+++ sshproxy/SSHproxy/client/console.py Tue Aug 2 13:25:45 2005
@@ -507,110 +507,3 @@
print "Not yet implemented"
-class SSHClient:
- def __init__(self, hostname, port='22'):
- self.hostname = hostname
- self.port = int(port)
- self.chan = []
- self.transport = None
- self.session = None
- self.sftp = None
- self.hkeys = SSHproxy.load_host_keys()
- self.transport = paramiko.Transport((self.hostname, self.port))
- self.transport.ultra_debug = 1
- if self.hkeys.has_key(self.hostname):
- self.hostkeytype = self.hkeys[self.hostname].keys()[0]
- self.hostkey = self.hkeys[self.hostname][self.hostkeytype]
- self.fdin = sys.stdin
- self.fdout = sys.stdout
- self.cmd = SSHpyShell(self)
-
- def connect(self, username, password):
- try:
- self.transport.connect(username=username, password=password,
hostkey=self.hostkey)
- except paramiko.ssh_exception.SSHException, e:
- print e
- self.transport.close()
- sys.exit(1)
-
-
- def __del__(self):
- if self.transport:
- self.transport.close()
-
- def open_session(self):
- chan = self.transport.open_session()
- chan.get_pty()
- chan.invoke_shell()
- self.session = chan
- self.chan.append(chan)
- return chan
-
- def close_session(self):
- if self.session:
- self.session.close()
- self.session = None
-
- def open_terminal(self):
- if not self.session:
- self.open_session()
- self.set_term()
- self.session.settimeout(0.0)
- fcntl.fcntl(self.fdin, fcntl.F_SETFL, os.O_NDELAY)
- CK = 0
- try:
- while 1:
- r, w, e = select.select([self.fdin], [], [], 0.2)
- if self.session.recv_ready():
- try:
- x = self.session.recv(1024)
- if len(x) == 0 or self.session.closed or
self.session.eof_received:
- break
- self.fdout.write(x)
- self.fdout.flush()
- except socket.timeout:
- pass
- if self.fdin in r:
- x = self.fdin.read()
- if len(x) == 0:
- break
- if ord(x[0]) == 11: # CTRL-K
- CK += 1
- if CK >= 1:
- self.reset_term()
- self.fdout.write("\n")
- self.cmd.cmdloop()
- fcntl.fcntl(self.fdin, fcntl.F_SETFL, os.O_NDELAY)
- self.set_term()
- # send ^L to clear screen and restore cmd line
- self.session.send(chr(12))
- CK = 0
- continue
-
- self.session.send(x)
- finally:
- self.reset_term()
-
- def set_term(self):
- if self.fdin == sys.stdin:
- self.oldtty = termios.tcgetattr(self.fdin)
- tty.setraw(self.fdin.fileno())
- tty.setcbreak(self.fdin.fileno())
-
- def reset_term(self):
- if self.fdin == sys.stdin:
- termios.tcsetattr(self.fdin, termios.TCSADRAIN, self.oldtty)
-
-
-if __name__ == '__main__':
- password = getpass.getpass("Password: ")
- import socket
- try:
- ssh = SSHClient(sys.argv[1], 2200)
- except socket.error, msg:
- print msg[1]
- sys.exit(1)
- ssh.connect(sys.argv[2], password)
- ssh.open_session()
- ssh.open_terminal()
- ssh.close_session()
- [sshproxy-dev] Changes to sshproxy/SSHproxy/client/console.py,
David Guerizec <=