aboutsummaryrefslogtreecommitdiff
path: root/demo_simple.py
diff options
context:
space:
mode:
authorJeremy T. Bouse <jbouse@debian.org>2009-11-27 16:20:12 -0500
committerJeremy T. Bouse <jbouse@debian.org>2009-11-27 16:20:12 -0500
commited280d5ac360e2af796e9bd973d7b4df89f0c449 (patch)
treece892d6ce9dad8c0ecbc9cbe73f8095195bef0b4 /demo_simple.py
parent176c6caf4ea7918e1698438634b237fab8456471 (diff)
downloadpython-paramiko-ed280d5ac360e2af796e9bd973d7b4df89f0c449.tar
python-paramiko-ed280d5ac360e2af796e9bd973d7b4df89f0c449.tar.gz
Imported Upstream version 1.7.4upstream/1.7.4
Diffstat (limited to 'demo_simple.py')
-rw-r--r--demo_simple.py128
1 files changed, 0 insertions, 128 deletions
diff --git a/demo_simple.py b/demo_simple.py
deleted file mode 100644
index 655a1a4..0000000
--- a/demo_simple.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (C) 2003-2005 Robey Pointer <robey@lag.net>
-#
-# This file is part of paramiko.
-#
-# Paramiko is free software; you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-
-
-# ----- WINDOWS USERS PLEASE NOTE -----
-# This demo won't work on Windows because it uses pseudo-terminals, which
-# are a posix-only feature. check out the README file for a simpler demo.
-
-
-import sys, os, base64, getpass, socket, traceback, termios, tty, select
-import paramiko
-
-
-# setup logging
-paramiko.util.log_to_file('demo_simple.log')
-
-# get hostname
-username = ''
-if len(sys.argv) > 1:
- hostname = sys.argv[1]
- if hostname.find('@') >= 0:
- username, hostname = hostname.split('@')
-else:
- hostname = raw_input('Hostname: ')
-if len(hostname) == 0:
- print '*** Hostname required.'
- sys.exit(1)
-port = 22
-if hostname.find(':') >= 0:
- hostname, portstr = hostname.split(':')
- port = int(portstr)
-
-
-# get username
-if username == '':
- default_username = getpass.getuser()
- username = raw_input('Username [%s]: ' % default_username)
- if len(username) == 0:
- username = default_username
-password = getpass.getpass('Password for %s@%s: ' % (username, hostname))
-
-
-# get host key, if we know one
-hostkeytype = None
-hostkey = None
-try:
- hkeys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
-except IOError:
- try:
- hkeys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
- except IOError:
- print '*** Unable to open host keys file'
- hkeys = {}
-
-if hkeys.has_key(hostname):
- hostkeytype = hkeys[hostname].keys()[0]
- hostkey = hkeys[hostname][hostkeytype]
- print 'Using host key of type %s' % hostkeytype
-
-
-# now, connect and use paramiko Transport to negotiate SSH2 across the connection
-try:
- t = paramiko.Transport((hostname, port))
- t.connect(username=username, password=password, hostkey=hostkey)
- chan = t.open_session()
- chan.get_pty()
- chan.invoke_shell()
- print '*** Here we go!'
- print
-
- try:
- oldtty = termios.tcgetattr(sys.stdin)
- tty.setraw(sys.stdin.fileno())
- tty.setcbreak(sys.stdin.fileno())
- chan.settimeout(0.0)
-
- while True:
- r, w, e = select.select([chan, sys.stdin], [], [])
- if chan in r:
- try:
- x = chan.recv(1024)
- if len(x) == 0:
- print '\r\n*** EOF\r\n',
- break
- sys.stdout.write(x)
- sys.stdout.flush()
- except socket.timeout:
- pass
- if sys.stdin in r:
- # FIXME: reading 1 byte at a time is incredibly dumb.
- x = sys.stdin.read(1)
- if len(x) == 0:
- print
- print '*** Bye.\r\n',
- break
- chan.send(x)
-
- finally:
- termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)
-
- chan.close()
- t.close()
-
-except Exception, e:
- print '*** Caught exception: %s: %s' % (e.__class__, e)
- traceback.print_exc()
- try:
- t.close()
- except:
- pass
- sys.exit(1)