Hi Experts ,<div><br></div><div>while i am running following demo ssh script of paramiko --></div><div><br></div><div><br></div><div><div><span class="Apple-style-span" style="font-size: x-small; "><b>import base64</b></span></div>
<div><font class="Apple-style-span" size="1"><b>import getpass</b></font></div><div><font class="Apple-style-span" size="1"><b>import os</b></font></div><div><font class="Apple-style-span" size="1"><b>import socket</b></font></div>
<div><font class="Apple-style-span" size="1"><b>import sys</b></font></div><div><font class="Apple-style-span" size="1"><b>import traceback</b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div>
<div><font class="Apple-style-span" size="1"><b>import paramiko</b></font></div><div><font class="Apple-style-span" size="1"><b>import interactive</b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div>
<div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b># setup logging</b></font></div><div><font class="Apple-style-span" size="1"><b>paramiko.util.log_to_file('demo_simple.log')</b></font></div>
<div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b># get hostname</b></font></div><div><font class="Apple-style-span" size="1"><b>username = ''</b></font></div>
<div><font class="Apple-style-span" size="1"><b>if len(sys.argv) > 1:</b></font></div><div><font class="Apple-style-span" size="1"><b>    hostname = sys.argv[1]</b></font></div><div><font class="Apple-style-span" size="1"><b>    if hostname.find('@') >= 0:</b></font></div>
<div><font class="Apple-style-span" size="1"><b>        username, hostname = hostname.split('@')</b></font></div><div><font class="Apple-style-span" size="1"><b>else:</b></font></div><div><font class="Apple-style-span" size="1"><b>    hostname = raw_input('Hostname: ')</b></font></div>
<div><font class="Apple-style-span" size="1"><b>if len(hostname) == 0:</b></font></div><div><font class="Apple-style-span" size="1"><b>    print '*** Hostname required.'</b></font></div><div><font class="Apple-style-span" size="1"><b>    sys.exit(1)</b></font></div>
<div><font class="Apple-style-span" size="1"><b>port = 22</b></font></div><div><font class="Apple-style-span" size="1"><b>if hostname.find(':') >= 0:</b></font></div><div><font class="Apple-style-span" size="1"><b>    hostname, portstr = hostname.split(':')</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    port = int(portstr)</b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div>
<div><font class="Apple-style-span" size="1"><b># get username</b></font></div><div><font class="Apple-style-span" size="1"><b>if username == '':</b></font></div><div><font class="Apple-style-span" size="1"><b>    default_username = getpass.getuser()</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    username = raw_input('Username [%s]: ' % default_username)</b></font></div><div><font class="Apple-style-span" size="1"><b>    if len(username) == 0:</b></font></div>
<div><font class="Apple-style-span" size="1"><b>        username = default_username</b></font></div><div><font class="Apple-style-span" size="1"><b>password = getpass.getpass('Password for %s@%s: ' % (username, hostname))</b></font></div>
<div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b># get host key, if we know one</b></font></div>
<div><font class="Apple-style-span" size="1"><b>hostkeytype = None</b></font></div><div><font class="Apple-style-span" size="1"><b>hostkey = None</b></font></div><div><font class="Apple-style-span" size="1"><b>try:</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))</b></font></div><div><font class="Apple-style-span" size="1"><b>except IOError:</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    try:</b></font></div><div><font class="Apple-style-span" size="1"><b>        # try ~/ssh/ too, because windows can't have a folder named ~/.ssh/</b></font></div><div>
<font class="Apple-style-span" size="1"><b>        host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))</b></font></div><div><font class="Apple-style-span" size="1"><b>    except IOError:</b></font></div>
<div><font class="Apple-style-span" size="1"><b>        print '*** Unable to open host keys file'</b></font></div><div><font class="Apple-style-span" size="1"><b>        host_keys = {}</b></font></div><div><font class="Apple-style-span" size="1"><b><br>
</b></font></div><div><font class="Apple-style-span" size="1"><b>if host_keys.has_key(hostname):</b></font></div><div><font class="Apple-style-span" size="1"><b>    hostkeytype = host_keys[hostname].keys()[0]</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    hostkey = host_keys[hostname][hostkeytype]</b></font></div><div><font class="Apple-style-span" size="1"><b>    print 'Using host key of type %s' % hostkeytype</b></font></div>
<div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div><div><font class="Apple-style-span" size="1"><b># now, connect and use paramiko Transport to negotiate SSH2 across the connection</b></font></div>
<div><font class="Apple-style-span" size="1"><b>try:</b></font></div><div><font class="Apple-style-span" size="1"><b>    t = paramiko.Transport((hostname, port))</b></font></div><div><font class="Apple-style-span" size="1"><b>    t.connect(username=username, password=password, hostkey=hostkey)</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    chan = t.open_session()</b></font></div><div><font class="Apple-style-span" size="1"><b>    chan.get_pty()</b></font></div><div><font class="Apple-style-span" size="1"><b>    chan.invoke_shell()</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    print '*** Here we go!'</b></font></div><div><font class="Apple-style-span" size="1"><b>    print</b></font></div><div><font class="Apple-style-span" size="1"><b>    interactive.interactive_shell(chan)</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    chan.close()</b></font></div><div><font class="Apple-style-span" size="1"><b>    t.close()</b></font></div><div><font class="Apple-style-span" size="1"><b><br></b></font></div>
<div><font class="Apple-style-span" size="1"><b>except Exception, e:</b></font></div><div><font class="Apple-style-span" size="1"><b>    print '*** Caught exception: %s: %s' % (e.__class__, e)</b></font></div><div>
<font class="Apple-style-span" size="1"><b>    traceback.print_exc()</b></font></div><div><font class="Apple-style-span" size="1"><b>    try:</b></font></div><div><font class="Apple-style-span" size="1"><b>        t.close()</b></font></div>
<div><font class="Apple-style-span" size="1"><b>    except:</b></font></div><div><font class="Apple-style-span" size="1"><b>        pass</b></font></div><div><font class="Apple-style-span" size="1"><b>    sys.exit(1)</b></font></div>
<div><br></div><div><br></div><div>It gives error as follows :</div><div><br></div><div><div><b>Warning (from warnings module):</b></div><div><b>  File "C:\Python26\lib\site-packages\Crypto\Hash\SHA.py", line 6</b></div>
<div><b>    from sha import *</b></div><div><b>DeprecationWarning: the sha module is deprecated; use the hashlib module instead</b></div><div><b><br></b></div><div><b>Warning (from warnings module):</b></div><div><b>  File "C:\Python26\lib\site-packages\Crypto\Hash\MD5.py", line 6</b></div>
<div><b>    from md5 import *</b></div><div><b>DeprecationWarning: the md5 module is deprecated; use hashlib instead</b></div><div><b>Hostname: 10.135.15.41</b></div><div><b>Username [admin]: root</b></div><div><b><br></b></div>
<div><b>Warning (from warnings module):</b></div><div><b>  File "C:\Python26\lib\getpass.py", line 88</b></div><div><b>    return fallback_getpass(prompt, stream)</b></div><div><b>GetPassWarning: Can not control echo on the terminal.</b></div>
<div><b>Warning: Password input may be echoed.</b></div><div><b>Password for <a href="mailto:root@10.135.15.41">root@10.135.15.41</a>: alcatel</b></div><div><b>*** Unable to open host keys file</b></div><div><b>*** Here we go!</b></div>
<div><b><br></b></div><div><b>Line-buffered terminal emulation. Press F6 or ^Z to send EOF.</b></div><div><b><br></b></div><div><b><br></b></div><div><b><br></b></div><div><b>Last login: Mon Dec 13 19:38:31 2010 from 10.135.19.50</b></div>
<div><b><br></b></div><div><b><br></b></div><div><b>*** Caught exception: <type 'exceptions.AttributeError'>: read</b></div><div><b>Traceback (most recent call last):</b></div><div><b>  File "C:\Python26\paramiko-1.7.4\demos\demo_simple.py", line 90, in <module></b></div>
<div><b>    interactive.interactive_shell(chan)</b></div><div><b>  File "C:\Python26\paramiko-1.7.4\demos\interactive.py", line 36, in interactive_shell</b></div><div><b>    windows_shell(chan)</b></div><div><b>  File "C:\Python26\paramiko-1.7.4\demos\interactive.py", line 91, in windows_shell</b></div>
<div><b>    d = sys.stdin.read(1)</b></div><div><b>  File "C:\Python26\lib\idlelib\rpc.py", line 560, in __getattr__</b></div><div><b>    raise AttributeError, name</b></div><div><b>AttributeError: read</b></div>
<div><b><br></b></div><div><b><br></b></div><div><b>*** EOF ***</b></div><div><b><br></b></div><div><b>Traceback (most recent call last):</b></div><div><b>  File "C:\Python26\paramiko-1.7.4\demos\demo_simple.py", line 101, in <module></b></div>
<div><b>    sys.exit(1)</b></div><div><b>SystemExit: 1</b></div></div><div><b><br></b></div><div><b>can you tell me what is use of Hostkey and how to overcome this issue?!</b></div>-- <br>BR <br>Darshak Bavishi<br>
</div>