bugfix
This commit is contained in:
parent
6b50c12367
commit
1dda35ee37
@ -22,6 +22,21 @@ class SSHNode:
|
|||||||
self.jumper_conns = []
|
self.jumper_conns = []
|
||||||
self.batch_cmds = []
|
self.batch_cmds = []
|
||||||
|
|
||||||
|
def info(self):
|
||||||
|
d = {
|
||||||
|
"jumpers":self.jumpers,
|
||||||
|
}
|
||||||
|
d.update(self.server2)
|
||||||
|
return d
|
||||||
|
|
||||||
|
def asjumper(self):
|
||||||
|
a = self.jumpers.copy()
|
||||||
|
a.append(self.server2)
|
||||||
|
return a
|
||||||
|
|
||||||
|
def set_jumpers(self, jumpers):
|
||||||
|
self.jumpers = jumpers
|
||||||
|
|
||||||
async def connect(self):
|
async def connect(self):
|
||||||
refconn = None
|
refconn = None
|
||||||
for j in self.jumpers:
|
for j in self.jumpers:
|
||||||
@ -80,10 +95,39 @@ class SSHNode:
|
|||||||
preserve=True, recurse=True)
|
preserve=True, recurse=True)
|
||||||
return x
|
return x
|
||||||
|
|
||||||
async def _cmd(self, cmd, stdin=None, stdout=None):
|
async def _cmd(self, cmd, input=None, stdin=None, stdout=None):
|
||||||
return await self.conn.run(cmd, stdin=stdin, stdout=stdout)
|
return await self.conn.run(cmd, input=input, stdin=stdin, stdout=stdout)
|
||||||
|
|
||||||
async def _run(self, conn, cmd, stdin=None, stdout=None):
|
async def _xcmd(self, cmd, xmsgs=[]):
|
||||||
|
proc = await self._process(cmd, term_type='xterm',
|
||||||
|
term_size=(80,24),
|
||||||
|
encoding='utf-8'
|
||||||
|
)
|
||||||
|
buffer = ''
|
||||||
|
|
||||||
|
msglen = len(xmsgs)
|
||||||
|
for i in range(msglen):
|
||||||
|
if xmsgs[i][0]:
|
||||||
|
break
|
||||||
|
proc.stdin.write(xmsgs[i][1])
|
||||||
|
|
||||||
|
while True:
|
||||||
|
if proc.stdout.at_eof():
|
||||||
|
break
|
||||||
|
x = await proc.stdout.read(1024)
|
||||||
|
buffer += x
|
||||||
|
if i >= msglen:
|
||||||
|
continue
|
||||||
|
|
||||||
|
k = xmsgs[i][0]
|
||||||
|
kin = buffer.split(xmsgs[i][0], 1)
|
||||||
|
if len(kin) > 1:
|
||||||
|
proc.stdin.write(xmsgs[i][1])
|
||||||
|
await proc.stdin.drain()
|
||||||
|
buffer = kin[1]
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
async def _run(self, cmd, input=None, stdin=None, stdout=None):
|
||||||
if cmd.startswith('l2r'):
|
if cmd.startswith('l2r'):
|
||||||
args = shlex.split(cmd)
|
args = shlex.split(cmd)
|
||||||
if len(args) == 3:
|
if len(args) == 3:
|
||||||
@ -96,11 +140,18 @@ class SSHNode:
|
|||||||
x = await self._r2l(args[1], args[2])
|
x = await self._r2l(args[1], args[2])
|
||||||
return x
|
return x
|
||||||
|
|
||||||
return await self._cmd(cmd, stdin=stdin, stdout=stdout)
|
return await self._cmd(cmd, input=input, stdin=stdin, stdout=stdout)
|
||||||
|
|
||||||
async def run(self, cmd, stdin=None, stdout=None):
|
def show_result(self, x):
|
||||||
|
if isinstance(x, Exception):
|
||||||
|
print('Exception:',e)
|
||||||
|
else:
|
||||||
|
print('stdout:', x.stdout)
|
||||||
|
print('stderr:', x.stderr)
|
||||||
|
|
||||||
|
async def run(self, cmd, input=None, stdin=None, stdout=None):
|
||||||
await self.connect()
|
await self.connect()
|
||||||
result = await self._run(cmd,
|
result = await self._run(cmd, input=input,
|
||||||
stdin=stdin, stdout=stdout)
|
stdin=stdin, stdout=stdout)
|
||||||
self.close()
|
self.close()
|
||||||
return result
|
return result
|
||||||
@ -194,15 +245,12 @@ class SSHBash:
|
|||||||
self.loop.stop()
|
self.loop.stop()
|
||||||
|
|
||||||
async def feed_stdin(self, f):
|
async def feed_stdin(self, f):
|
||||||
print('1111111')
|
|
||||||
self.stdin_need = False
|
self.stdin_need = False
|
||||||
x = await f(65535)
|
x = await f(65535)
|
||||||
if x is None:
|
if x is None:
|
||||||
self.exit()
|
self.exit()
|
||||||
print('22222222')
|
|
||||||
self.p_obj.stdin.write(x)
|
self.p_obj.stdin.write(x)
|
||||||
await self.p_obj.stdin.drain()
|
await self.p_obj.stdin.drain()
|
||||||
print('33333333')
|
|
||||||
self.stdin_need = True
|
self.stdin_need = True
|
||||||
|
|
||||||
async def run(self, read_co, write_co):
|
async def run(self, read_co, write_co):
|
||||||
|
Loading…
Reference in New Issue
Block a user