mirror of
https://github.com/clearml/clearml-session
synced 2025-02-07 05:20:45 +00:00
Use "getpass" instead of "input" for reading a password interactively
This commit is contained in:
parent
a3117e0c88
commit
c3952120b7
@ -7,6 +7,7 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
from argparse import ArgumentParser, FileType
|
from argparse import ArgumentParser, FileType
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
from getpass import getpass
|
||||||
from io import TextIOBase, StringIO
|
from io import TextIOBase, StringIO
|
||||||
from time import time, sleep
|
from time import time, sleep
|
||||||
|
|
||||||
@ -727,7 +728,7 @@ def start_ssh_tunnel(username, remote_address, ssh_port, ssh_password, local_rem
|
|||||||
try:
|
try:
|
||||||
child.expect([r'(?i)password:'], timeout=5)
|
child.expect([r'(?i)password:'], timeout=5)
|
||||||
print('{}Error: incorrect password'.format(fd.read() + '\n' if debug else ''))
|
print('{}Error: incorrect password'.format(fd.read() + '\n' if debug else ''))
|
||||||
ssh_password = input('Please enter password manually: ')
|
ssh_password = getpass('Please enter password manually: ')
|
||||||
child.sendline(ssh_password)
|
child.sendline(ssh_password)
|
||||||
child.expect([r'(?i)password:'], timeout=5)
|
child.expect([r'(?i)password:'], timeout=5)
|
||||||
print('{}Error: incorrect user input password'.format(fd.read() + '\n' if debug else ''))
|
print('{}Error: incorrect user input password'.format(fd.read() + '\n' if debug else ''))
|
||||||
@ -743,7 +744,7 @@ def start_ssh_tunnel(username, remote_address, ssh_port, ssh_password, local_rem
|
|||||||
try:
|
try:
|
||||||
child.expect([r'(?i)password:'], timeout=5)
|
child.expect([r'(?i)password:'], timeout=5)
|
||||||
print('Error: incorrect password')
|
print('Error: incorrect password')
|
||||||
ssh_password = input('Please enter password manually: ')
|
ssh_password = getpass('Please enter password manually: ')
|
||||||
child.sendline(ssh_password)
|
child.sendline(ssh_password)
|
||||||
child.expect([r'(?i)password:'], timeout=5)
|
child.expect([r'(?i)password:'], timeout=5)
|
||||||
print('{}Error: incorrect user input password'.format(fd.read() + '\n' if debug else ''))
|
print('{}Error: incorrect user input password'.format(fd.read() + '\n' if debug else ''))
|
||||||
@ -856,6 +857,16 @@ def monitor_ssh_tunnel(state, task):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
connect_message = (
|
||||||
|
'\nConnection is up and running\n'
|
||||||
|
'Enter \"r\" (or \"reconnect\") to reconnect the session (for example after suspend)\n'
|
||||||
|
'`i` (or "interactive") to connect to the SSH session\n'
|
||||||
|
'`Ctrl-C` (or "quit") to abort (remote session remains active)\n'
|
||||||
|
'or \"Shutdown\" to shut down remote interactive session'
|
||||||
|
)
|
||||||
|
short_console_msg = \
|
||||||
|
"Enter \"r\" (\"reconnect\"), `i` (\"interactive\"), `Ctrl-C` (\"quit\") or \"Shutdown\""
|
||||||
|
|
||||||
if not ssh_process or not ssh_process.isalive():
|
if not ssh_process or not ssh_process.isalive():
|
||||||
ssh_process, ssh_password = start_ssh_tunnel(
|
ssh_process, ssh_password = start_ssh_tunnel(
|
||||||
state.get('username') or 'root',
|
state.get('username') or 'root',
|
||||||
@ -882,12 +893,7 @@ def monitor_ssh_tunnel(state, task):
|
|||||||
if state.get('user_folder'):
|
if state.get('user_folder'):
|
||||||
msg += "?folder={}".format(state.get('user_folder'))
|
msg += "?folder={}".format(state.get('user_folder'))
|
||||||
print(msg)
|
print(msg)
|
||||||
|
print(connect_message)
|
||||||
print('\nConnection is up and running\n'
|
|
||||||
'Enter \"r\" (or \"reconnect\") to reconnect the session (for example after suspend)\n'
|
|
||||||
'`i` (or "interactive") to connect to the SSH session\n'
|
|
||||||
'`Ctrl-C` (or "quit") to abort (remote session remains active)\n'
|
|
||||||
'or \"Shutdown\" to shut down remote interactive session')
|
|
||||||
else:
|
else:
|
||||||
logging.getLogger().warning('SSH tunneling failed, retrying in {} seconds'.format(3))
|
logging.getLogger().warning('SSH tunneling failed, retrying in {} seconds'.format(3))
|
||||||
sleep(3.)
|
sleep(3.)
|
||||||
@ -918,7 +924,10 @@ def monitor_ssh_tunnel(state, task):
|
|||||||
pass
|
pass
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if user_input.lower() in ('i', 'interactive',):
|
if not user_input:
|
||||||
|
print(short_console_msg)
|
||||||
|
continue
|
||||||
|
elif user_input.lower() in ('i', 'interactive',):
|
||||||
interactive_ssh(ssh_process)
|
interactive_ssh(ssh_process)
|
||||||
continue
|
continue
|
||||||
elif user_input.lower() == 'shutdown':
|
elif user_input.lower() == 'shutdown':
|
||||||
|
Loading…
Reference in New Issue
Block a user