From e33085889f26c76587fdab2ad600ed336dc028b5 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sat, 6 Oct 2018 23:35:00 +0200 Subject: Improve ssh error reporting in some tasks --- kpov_judge/tasks/mock_entrance_exam/task.py | 63 ++++++++++++++++------------- 1 file changed, 34 insertions(+), 29 deletions(-) (limited to 'kpov_judge/tasks/mock_entrance_exam/task.py') diff --git a/kpov_judge/tasks/mock_entrance_exam/task.py b/kpov_judge/tasks/mock_entrance_exam/task.py index a6e3c8c..682ec0d 100644 --- a/kpov_judge/tasks/mock_entrance_exam/task.py +++ b/kpov_judge/tasks/mock_entrance_exam/task.py @@ -138,36 +138,39 @@ def task(student_IP, net_prog_name, param_gen_seed): from pexpect import pxssh import random - conn = pxssh.pxssh() - conn.login(student_IP, 'student', 'vaje') - results = dict() + results = {} r = random.Random(int(param_gen_seed)) - env_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(11)]) - - arg_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(13)]) - stdin_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(17)]) - conn.sendline('ls -l {}'.format(P_script)) - conn.prompt() - results['script_ls'] = conn.before - conn.sendline('ls -l {}'.format(P_executable)) - conn.prompt() - results['executable_ls'] = conn.before - conn.sendline('export {}={}; {}'.format(env_c, env_val, P_script)) - conn.prompt() - results['script_run'] = conn.before - conn.sendline('cat {}'.format(out_stderr_c)) - conn.prompt() - results['script_stderr'] = conn.before - conn.sendline('cat {}'.format(out_stdout_c)) - conn.prompt() - results['script_stdout'] = conn.before - conn.sendline('echo "{}" | {} "{}" 2> /dev/null'.format(stdin_val, P_executable, arg_val)) - conn.prompt() - results['prog_stdout'] = conn.before - conn.sendline('echo "{}" | {} "{}" > /dev/null'.format(stdin_val, P_executable, arg_val)) - conn.prompt() - results['prog_stderr'] = conn.before - conn.logout() + try: + s = pxssh.pxssh(encoding='utf-8') + s.login(student_IP, 'student', 'vaje') + results['ssh'] = True + env_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(11)]) + arg_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(13)]) + stdin_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(17)]) + s.sendline('ls -l {}'.format(P_script)) + s.prompt() + results['script_ls'] = s.before + s.sendline('ls -l {}'.format(P_executable)) + s.prompt() + results['executable_ls'] = s.before + s.sendline('export {}={}; {}'.format(env_c, env_val, P_script)) + s.prompt() + results['script_run'] = s.before + s.sendline('cat {}'.format(out_stderr_c)) + s.prompt() + results['script_stderr'] = s.before + s.sendline('cat {}'.format(out_stdout_c)) + s.prompt() + results['script_stdout'] = s.before + s.sendline('echo "{}" | {} "{}" 2> /dev/null'.format(stdin_val, P_executable, arg_val)) + s.prompt() + results['prog_stdout'] = s.before + s.sendline('echo "{}" | {} "{}" > /dev/null'.format(stdin_val, P_executable, arg_val)) + s.prompt() + results['prog_stderr'] = s.before + s.logout() + except pxssh.ExceptionPxssh as ex: + results['ssh'] = str(ex) return results def gen_params(user_id, params_meta): @@ -209,6 +212,8 @@ def task_check(results, params): return(s_out, s_err, retval) score = 0 hints = [] + if results['ssh'] is not True: + hints += ['ssh failed: ' + results['ssh']] r = random.Random(int(params['param_gen_seed'])) env_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(11)]) arg_val = "".join([r.choice('ABCDEFGHIJKLMNPRSTUVZ012345') for i in range(13)]) -- cgit v1.2.1