Python based paramiko package acting up on Linux, code works fine on windows
flxkid
theflxkid at gmail.com
Fri Sep 18 17:36:08 EDT 2009
On Sep 18, 11:22 am, flxkid <theflx... at 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
More information about the Python-list
mailing list