bugfix
This commit is contained in:
parent
dbfe00df59
commit
afe9005137
@ -12,11 +12,15 @@ class SSHNode:
|
|||||||
username='root',
|
username='root',
|
||||||
port=22,
|
port=22,
|
||||||
password=None,
|
password=None,
|
||||||
|
client_keys=[],
|
||||||
|
passphrase=None,
|
||||||
jumpers=[]):
|
jumpers=[]):
|
||||||
self.server2 = {
|
self.server2 = {
|
||||||
"host":host,
|
"host":host,
|
||||||
"username":username,
|
"username":username,
|
||||||
"password":password,
|
"password":password,
|
||||||
|
"client_keys":client_keys,
|
||||||
|
"passphrase":passphrase,
|
||||||
"port":port
|
"port":port
|
||||||
}
|
}
|
||||||
print(self.server2)
|
print(self.server2)
|
||||||
@ -40,47 +44,72 @@ class SSHNode:
|
|||||||
def set_jumpers(self, jumpers):
|
def set_jumpers(self, jumpers):
|
||||||
self.jumpers = jumpers
|
self.jumpers = jumpers
|
||||||
|
|
||||||
|
async def _connect(self, **kw):
|
||||||
|
refconn = kw['refconn']
|
||||||
|
host = kw['host']
|
||||||
|
username = kw.get('username', 'root')
|
||||||
|
port = kw.get('port',22)
|
||||||
|
password= kw.get('password', None)
|
||||||
|
client_keys = kw.get('client_keys', [])
|
||||||
|
passphrase = kw.get('passphrase', None)
|
||||||
|
conn = None
|
||||||
|
if refconn:
|
||||||
|
if password:
|
||||||
|
conn = await refconn.connect_ssh(host,
|
||||||
|
username=username,
|
||||||
|
known_hosts=None,
|
||||||
|
keepalive_interval=60,
|
||||||
|
password=password,
|
||||||
|
port=port)
|
||||||
|
elif client_keys != []:
|
||||||
|
conn = await refconn.connect_ssh(host,
|
||||||
|
username=username,
|
||||||
|
known_hosts=None,
|
||||||
|
keepalive_interval=60,
|
||||||
|
client_keys=client_keys,
|
||||||
|
passphrase=passphrase,
|
||||||
|
port=port)
|
||||||
|
else:
|
||||||
|
conn = await refconn.connect_ssh(host,
|
||||||
|
username=username,
|
||||||
|
known_hosts=None,
|
||||||
|
keepalive_interval=60,
|
||||||
|
port=port)
|
||||||
|
|
||||||
|
else:
|
||||||
|
if password:
|
||||||
|
conn = await asyncssh.connect(host,
|
||||||
|
username=username,
|
||||||
|
known_hosts=None,
|
||||||
|
keepalive_interval=60,
|
||||||
|
password=password,
|
||||||
|
port=port)
|
||||||
|
elif client_keys:
|
||||||
|
conn = await asyncssh.connect(host,
|
||||||
|
username=username,
|
||||||
|
known_hosts=None,
|
||||||
|
keepalive_interval=60,
|
||||||
|
client_keys=client_keys,
|
||||||
|
passphrase=passphrase,
|
||||||
|
port=port)
|
||||||
|
else:
|
||||||
|
conn = await asyncssh.connect(host,
|
||||||
|
username=username,
|
||||||
|
known_hosts=None,
|
||||||
|
keepalive_interval=60,
|
||||||
|
port=port)
|
||||||
|
return conn
|
||||||
|
|
||||||
async def connect(self):
|
async def connect(self):
|
||||||
refconn = None
|
refconn = None
|
||||||
for j in self.jumpers:
|
for jj in self.jumpers:
|
||||||
host = j['host']
|
j = jj.copy()
|
||||||
username = j.get('username', 'root')
|
j['refconn'] = refconn
|
||||||
port = j.get('port',22)
|
refconn = await self._connect(**j)
|
||||||
password= j.get('password', None)
|
|
||||||
if refconn:
|
|
||||||
refconn = await refconn.connect_ssh(host,
|
|
||||||
username=username,
|
|
||||||
known_hosts=None,
|
|
||||||
keepalive_interval=60,
|
|
||||||
password=password,
|
|
||||||
port=port)
|
|
||||||
else:
|
|
||||||
refconn = await asyncssh.connect(host,
|
|
||||||
username=username,
|
|
||||||
known_hosts=None,
|
|
||||||
keepalive_interval=60,
|
|
||||||
password=password,
|
|
||||||
port=port)
|
|
||||||
self.jumper_conns.append(refconn)
|
|
||||||
|
|
||||||
host = self.server2['host']
|
j = self.server2.copy()
|
||||||
username = self.server2.get('username', 'root')
|
j['refconn'] = refconn
|
||||||
port = self.server2.get('port',22)
|
self.conn = await self._connect(**j)
|
||||||
password = self.server2.get('password', None)
|
|
||||||
if refconn:
|
|
||||||
self.conn = await refconn.connect_ssh(host,
|
|
||||||
username=username,
|
|
||||||
port=port,
|
|
||||||
password=password,
|
|
||||||
keepalive_interval=60,
|
|
||||||
known_hosts=None)
|
|
||||||
else:
|
|
||||||
self.conn = await asyncssh.connect(host,
|
|
||||||
username=username,
|
|
||||||
password=password,
|
|
||||||
known_hosts=None,
|
|
||||||
keepalive_interval=60,
|
|
||||||
port=port)
|
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
self.conn.close()
|
self.conn.close()
|
||||||
@ -113,7 +142,6 @@ class SSHNode:
|
|||||||
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',
|
||||||
|
|
||||||
term_size=(80,24),
|
term_size=(80,24),
|
||||||
encoding='utf-8'
|
encoding='utf-8'
|
||||||
)
|
)
|
||||||
|
@ -17,5 +17,6 @@ requests
|
|||||||
jinja2
|
jinja2
|
||||||
pyzmq
|
pyzmq
|
||||||
cryptography
|
cryptography
|
||||||
asyncssh==2.13.2
|
bcrypt
|
||||||
|
asyncssh
|
||||||
eventpy
|
eventpy
|
||||||
|
Loading…
Reference in New Issue
Block a user