From 8081a5520a441b43a8a7a73f3a90c7aacfaa8e10 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Sun, 24 Feb 2019 21:05:27 +0100 Subject: Move everything one level up --- tasks/set_motd/task.py | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 tasks/set_motd/task.py (limited to 'tasks/set_motd/task.py') diff --git a/tasks/set_motd/task.py b/tasks/set_motd/task.py new file mode 100644 index 0000000..89b78f6 --- /dev/null +++ b/tasks/set_motd/task.py @@ -0,0 +1,86 @@ +instructions = { + 'si': '''\ +

+Ustvari dva navidezna računalnika - imenujmo ju arbiter in student. +Na računalniku student ustvarite uporabnika z uporabniškim imenom {{peer_user}}. IP navideznega računalnika student ter geslo za uporabnika {{peer_user}} nastavite sami. + +

+Poskrbite, da se bo v sporočilu, ki se ob prijavi izpiše na računalniku student, pojavil niz + +

{{niz}}
+ +

+Temu sporočilu v angleščini rečemo message of the day oziroma MOTD. Ocenjevalni program pričakuje, da se bo ob koncu prijave pojavila ukazna vrstica oblike + +

username@hostname:~$ 
+ +Pazite, da se bo takšna vrstica pojavila šele po nizu, ki ste ga dobili v teh navodilih. + ''', + 'en': '''\ +

+Create two virtual machines named arbiter and student. On student, create a user with the username {{peer_user}}. Set the IP of student and the password for {{peer_user}} yourself. + +

+Set the message of the day (MOTD) on student to + +

{{niz}}
+ +

+This is the message which is displayed when you log in. The grading system expects that after login a prompt similar to + +

username@hostname:~$ 
+ +

+appears. Make sure that this line shows up only after the string you got in these instructions. +''' +} + +computers = { + 'arbiter': { + 'disks': [{'name': 'dhcp-gw'}], + 'flavor': 'm1.tiny', + 'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}], + 'config_drive': True, + 'userdata': {'string': "#!/bin/bash\nsed -i '/cloud/d' /etc/fstab\npoweroff &\n"} + }, + 'student': { + 'disks': [{ 'name': 'console'}], + 'flavor': 'm1.tiny', + 'network_interfaces': [{'network': 'net1'}], + 'config_drive': True, + 'userdata': {'string': "#!/bin/bash\nsed -i '/cloud/d' /etc/fstab\npoweroff &\n"} + } +} + +networks = { 'net1': {'public': False}, 'test-net': {'public': True} } + +params_meta = { + 'peer_ip': {'descriptions': {'si': 'IP računalnika', 'en':'IP'}, 'w': True, 'public': True, 'type': 'IP', 'generated': False}, + 'peer_user': {'descriptions': {'si': 'ime uporabnika', 'en':'Username'}, 'w': False, 'public': True, 'type': 'username', 'generated': True}, + 'peer_passwd': {'descriptions': {'si': 'geslo uporabnika', 'en': 'Password'}, 'w': True, 'public': True, 'type': 'alnumstr', 'generated': False}, + 'niz': {'descriptions':{'si': 'niz, ki naj se v motd pokaže', 'en': 'The string which should be displayed in the MOTD'}, 'w': False, 'public': True, 'type': 'short_text', 'generated': True}, +} + +def task(peer_ip, peer_user, peer_passwd, niz): + "Check whether ssh works and return the MOTD." + return kpov_util.ssh_test(peer_ip, peer_user, peer_passwd) + +def gen_params(user_id, params_meta): + return kpov_util.default_gen(user_id, params_meta) + +def task_check(results, params): + niz = params['niz'] + score = 0 + hints = [] + if results['ssh'] is True: + score += 4 + if niz in results['motd']: + score += 6 + else: + hints += ['wrong motd:\n' + results['motd'] + '\n'] + else: + hints += ['ssh failed: ' + results['ssh']] + return score, hints + +def prepare_disks(templates, task_params, global_params): + write_default_config(templates['dhcp-gw'], global_params) -- cgit v1.2.1