[Twisted-Python] Serializing cftp and ssh sessions
Axel Rau
Axel.Rau at chaos1.de
Tue Oct 14 00:02:01 MDT 2014
I have adapted t.c.s.cftp and one of the ssh examples to transfer files to a remote host and than execute some commands there.
Both has to be done for several remote hosts in sequence.
Start of the ssh session has to wait until the cftp sessions are complete and after that has completed, the cftp session for the next host has to be started . . .
The cftp part begins so:
def distributeStuff(host, tasks):
. . .
doConnect(reactor, options, tasks)
def doConnect(reactor, options, tasks):
. . .
conn.tasks = tasks
vhk = verifyHostKey
uao = SSHUserAuthClient(options['user'], options, conn)
connect(host, port, options, vhk, uao).addErrback(_ebExit)
class SSHConn(connection.SSHConnection):
def serviceStarted(self):
self.openChannel(SSHSession())
I played with inlineCallbacks but could not find a point where to place my yielded function.
I tried to overwrite channelClosed in SSHConn:
def channelClosed(self, channel):
super(SSHConn, self).channelClosed(channel)
if len(self.channels) == 0:
print ‚[Last channel closed.]'
# open ssh ssession:
. . .
but that gave an unhandled error:
2014-10-14 07:54:34+0200 [SSHService ssh-connection on SSHClientTransport,client] Unhandled Error
Traceback (most recent call last):
File "/usr/local/py_venv/p27/lib/python2.7/site-packages/twisted/internet/tcp.py", line 214, in doRead
return self._dataReceived(data)
File "/usr/local/py_venv/p27/lib/python2.7/site-packages/twisted/internet/tcp.py", line 220, in _dataReceived
rval = self.protocol.dataReceived(data)
File "/usr/local/py_venv/p27/lib/python2.7/site-packages/twisted/conch/ssh/transport.py", line 461, in dataReceived
self.dispatchMessage(messageNum, packet[1:])
File "/usr/local/py_venv/p27/lib/python2.7/site-packages/twisted/conch/ssh/transport.py", line 483, in dispatchMessage
messageNum, payload)
--- <exception caught here> ---
File "/usr/local/py_venv/p27/lib/python2.7/site-packages/twisted/python/log.py", line 88, in callWithLogger
return callWithContext({"system": lp}, func, *args, **kw)
File „/usr/local/py_venv/p27/lib/python2.7/site-p
(bt stopped here).
Please advise!
Thanks, Axel
—
PGP-Key:29E99DD6 ☀ +49 151 2300 9283 ☀ computing @ chaos claudius
More information about the Twisted-Python
mailing list