bugfix
This commit is contained in:
parent
25fc565343
commit
9bf42664a8
@ -2,6 +2,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import shlex
|
import shlex
|
||||||
|
from contextlib import asynccontextmanager
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from appPublic.myTE import tmpTml
|
from appPublic.myTE import tmpTml
|
||||||
@ -111,6 +112,25 @@ class SSHNode:
|
|||||||
j['refconn'] = refconn
|
j['refconn'] = refconn
|
||||||
self.conn = await self._connect(**j)
|
self.conn = await self._connect(**j)
|
||||||
|
|
||||||
|
@asynccontextmanager
|
||||||
|
async def getconnector(self):
|
||||||
|
refconn = None
|
||||||
|
for jj in self.jumpers:
|
||||||
|
j = jj.copy()
|
||||||
|
j['refconn'] = refconn
|
||||||
|
refconn = await self._connect(**j)
|
||||||
|
|
||||||
|
j = self.server2.copy()
|
||||||
|
j['refconn'] = refconn
|
||||||
|
conn = await self._connect(**j)
|
||||||
|
try:
|
||||||
|
yield SshConnector(conn, refconn=refconn)
|
||||||
|
except Exception as e:
|
||||||
|
exception(f'{e=}, {format_exc()}')
|
||||||
|
conn.close()
|
||||||
|
if refconn:
|
||||||
|
refconn.close()
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
self.conn.close()
|
self.conn.close()
|
||||||
cnt = len(self.jumper_conns)
|
cnt = len(self.jumper_conns)
|
||||||
@ -141,8 +161,8 @@ class SSHNode:
|
|||||||
async def _xcmd(self, cmd, xmsgs=[], ns={},
|
async def _xcmd(self, cmd, xmsgs=[], ns={},
|
||||||
show_input=None,
|
show_input=None,
|
||||||
show_stdout=None):
|
show_stdout=None):
|
||||||
proc = await self._process(cmd, term_type='xterm',
|
proc = await self._process(cmd, term_type='xterm-256color',
|
||||||
term_size=(80,24),
|
term_size=(24, 80),
|
||||||
encoding='utf-8'
|
encoding='utf-8'
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -323,8 +343,8 @@ class SSHBash:
|
|||||||
async def run(self, read_co, write_co):
|
async def run(self, read_co, write_co):
|
||||||
await self.node.connect()
|
await self.node.connect()
|
||||||
self.p_obj = await self.node._process('bash',
|
self.p_obj = await self.node._process('bash',
|
||||||
term_type='vt100',
|
term_type='xterm-256color',
|
||||||
term_size=(80,24),
|
term_size=(24, 80),
|
||||||
encoding=None)
|
encoding=None)
|
||||||
if isinstance(self.p_obj, Exception):
|
if isinstance(self.p_obj, Exception):
|
||||||
print('Excetion:', self.p_obj)
|
print('Excetion:', self.p_obj)
|
||||||
@ -346,6 +366,31 @@ class SSHBash:
|
|||||||
x = await self.p_obj.stdout.read(1024)
|
x = await self.p_obj.stdout.read(1024)
|
||||||
await write_co(x)
|
await write_co(x)
|
||||||
|
|
||||||
|
def SshConnector:
|
||||||
|
def __init__(self, conn, refconn=None):
|
||||||
|
self.conn = conn
|
||||||
|
self.refconn = refconn
|
||||||
|
|
||||||
|
async def r2l(self, rf, lf):
|
||||||
|
x = await asyncssh.scp((self.conn, rf),
|
||||||
|
lf,
|
||||||
|
preserve=True,
|
||||||
|
recurse=True)
|
||||||
|
return x
|
||||||
|
|
||||||
|
async def l2r(self, lf, rf):
|
||||||
|
x = await asyncssh.scp(lf, (self.comm, rf),
|
||||||
|
preserve=True,
|
||||||
|
recurse=Tree)
|
||||||
|
return x
|
||||||
|
|
||||||
|
async def run_process(self, *args, **kw):
|
||||||
|
a = await self.conn.create_process(*args, **kw)
|
||||||
|
return a
|
||||||
|
|
||||||
|
async def run(self, cmdline, input=None, stdin=None, stdout=None, stderr=None):
|
||||||
|
return await self.conn.run(cmdline, input=input, stdin=stdin, stdout=stdout)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
async def sysstdin_read():
|
async def sysstdin_read():
|
||||||
return os.read(sys.stdin.fileno(), 65535)
|
return os.read(sys.stdin.fileno(), 65535)
|
||||||
|
Loading…
Reference in New Issue
Block a user