On Sep 18, 11:22*am, flxkid <theflx...@gmail.com> wrote:
> I've tried to post to the mailing list for paramiko and contact the
> author, but it seems he's having some mailing list problems. *Anyways,
> I have this small example that works just fine on Windows against
> Python 2.6.2, but fails on Ubuntu against 2.6.2. *Here is the code:
>
> import subprocess
> import os
> import re
> import paramiko
> import sqlite3
> import datetime
> import base64
> import sys
> import logging
> from paramiko.rsakey import RSAKey
>
> class OpenSessions:
> * * * * sshconns = []
> * * * * sqlconn = sqlite3.connect('test.sqlite')
>
> * * * * def __init__(self):
> * * * * * * * * self.sqlconn.row_factory = sqlite3.Row
> * * * * * * * * sqlcur = self.sqlconn.cursor()
> * * * * * * * * sqlcur.execute("select host, pub_key, username, password,
> private_key from ssh_hosts")
> * * * * * * * * rows = sqlcur.fetchall()
> * * * * * * * * for row in rows:
> * * * * * * * * * * * * sshconn = paramiko.SSHClient()
> * * * * * * * * * * * * sshconn._system_host_keys..add(row["host"], "ssh-rsa", RSAKey
> (data=base64.decodestring(row["pub_key"])))
> * * * * * * * * * * * * if row["private_key"] != "":
> * * * * * * * * * * * * * * * * sshconn.connect(hostname=row["host"], username=row["username"],
> pkey=RSAKey(data=base64.decodestring(row["private_key"])))
> * * * * * * * * * * * * elif row["password"] != "":
> * * * * * * * * * * * * * * * * sshconn.connect(hostname=row["host"], username=row["username"],
> password=row["password"], look_for_keys=False, timeout=60)
> * * * * * * * * * * * * self.sshconns.append(sshconn)
>
> * * * * * * * * output = ""
> * * * * * * * * for conn in self.sshconns:
> * * * * * * * * * * * * print conn.exec_command("uname -a")[1].readline()
>
> * * * * * * * * exit()
>
> if __name__== '__main__':
> * * * * sessions = OpenSessions()
>
> The code fails with this trace:
> Traceback (most recent call last):
> * File "test.py", line 41, in <module>
> * * sessions = OpenSessions()
> * File "test.py", line 36, in __init__
> * * print chan.exec_command("uname -a")[1].readline()
> * File "/usr/local/lib/python2.6/dist-packages/paramiko/channel.py",
> line 212, in exec_command
> * * self._wait_for_event()
> * File "/usr/local/lib/python2.6/dist-packages/paramiko/channel.py",
> line 1077, in _wait_for_event
> * * raise e
> paramiko.SSHException: Channel closed.
> Exception in thread Thread-1 (most likely raised during interpreter
> shutdown):
> Traceback (most recent call last):
> * File "/usr/lib/python2.6/threading.py", line 525, in
> __bootstrap_inner
> * File "/usr/local/lib/python2.6/dist-packages/paramiko/transport.py",
> line 1567, in run
> <type 'exceptions.AttributeError'>: 'NoneType' object has no attribute
> 'error'
>
> This well beyond my abilities to debug. *All I know is that it always
> works on Windows, and always fails in Ubuntu (which of course is where
> I need use the code). *Any suggestions? *I know the paramiko mailing
> list would probably be the better spot for this, but like I said, its
> got some issues right now.
>
> OLIVER
Was a bug in paramiko channel.py in the _wait_for_event function. All
fixed up now.
OLIVER
|