Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Python based paramiko package acting up on Linux, code works fine on windows

126 views
Skip to first unread message

flxkid

unread,
Sep 18, 2009, 2:22:40 PM9/18/09
to
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


flxkid

unread,
Sep 18, 2009, 5:36:08 PM9/18/09
to

Was a bug in paramiko channel.py in the _wait_for_event function. All
fixed up now.

OLIVER

0 new messages