summaryrefslogtreecommitdiff
path: root/kpov_judge/tasks/copy_rename_20_files_tail_env/task.py
blob: 6758e34b30960421889bb6d1348317bc0195cd95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# TODO: finish this!
# kpov_random_helpers should be imported by add_assignment.py

instructions = {
    'si':u"""
Prijavi se na sistem.
V domači mapi najdeš imenik Mapa z 20 datotekami.
  - preimenuj vse datoteke tako, da zamenjaš minuse s podčrtaji
  - Napiši čim krajši ukaz, ki vse datoteke iz /home/user/mapa/mojimenik premakne v /home/user/novi
  - Napiši ukaz, ki s pomočjo ukaza grep v datoteko "mama.txt" izpiše vse navade (ne skrite) datoteke v trenutnem imeniku, ki vsebujejo niz "mama", v datoteko "napake.txt" pa izpiše vse morebitne napake (npr. to, da so nekateri objekti v trenutnem imeniku dejansko imeniki ali napačne simbolične povezave)
  - Napiši ukaz, ki bo 5s sledil vsebini /var/log/syslog. V primeru, da se v syslogu pojavi niz "zmeda", naj program izpiše "imam ga". Poleg tega naj program med sledenjem syslog-u odšteva od 5 do 1 (vsako sekundo naj se izpiše naslednja številka.
  - Nastavi okoljsko spremenljivko TEST, da bo imela isto vrednost kot okoljska spremenljivka USER + število okoljskih spremenljivk, ki v imenu ali vrednosti ne vsebujejo besede TEST. Primer: polz37
  - S pomočjo programa cURL shrani vsebino spletne strani www.google.com  v datoteko  z imenom website.txt
  - Napiši ukaz, ki bo število pojavitev značke <div> v datoteki website.txt dodal na konec te iste datoteke brez, da bi se ukaz zapisal v zgodovino ukazov "bash history"
  - Napiši ukaz brez uporabe programa cron, kateri 5 minut po izvedbi izpiše vsebino imenika v katerem se trenutno nahajaš
  - Napiši najkrajši ukaz, ki s pomočjo Pythona zažene preprost (integriran) HTTP strežnik kateri streže datoteke iz imenika iz katerega je bil pognan na vratih 8000

"""
}

instructios = {
	'en':u"""
Log into the system.
In your home folder you will find a directory called Folder containing 20 files.
  - Rename all files replacing minus sign with the underscore
  - Specify the shortest command for copying all the files located in /home/user/Folder into the folder /home/user/new
  - Specify the shortest command, which will, using the grep command, 
write all normal (not hidden) files containing a string "mama" located 
in working directory (pwd) into file "mama.txt" while writing errors such as files in current directory being folders or symbolic links in the file called "Errors.txt"
  - Specify a command, which will track the contents of /var/log/syslog 
for 5s. In case it finds the entry "confusion" in syslog, print "got it". 
In addition, let the program subtrack 1 from the counter every 
second(5 to 1) to show the status of the tracker.      	
  - Set the variable TEST, which will have the same value as the 
variable USER + the number of variables that do not include the name 
TEST, for example polz37.
- With the help of cURL fetch the website content of www.google.com and save it into file named website.txt
- Write a command which will count the number of <div> tags in the filename website.txt and will then append the result to this same file. Command should not be logged in "bash history"!
- Write a command (don't use cron!) which will list all the files in the current directory 5 minutes after execution
- Write shortest command possible which will with the help of Python start a simple (integrated) HTTP server and will serve the files from the current directory on port 8000.
}

computers = {
    'malishell': {
        'disks': [
            {   'name': 'malishell',
            },
            #{   'name': 'CDROM',
            #    'options':{'readonly': True},
            #    'parts': [],# no parts, no mounting.
            #}
        ],
        'network_interfaces': [{'network': 'net1'}],
        'flavor': 'm1.tiny',
        'config_drive': False

    },
    'SimpleArbiter': {
        'disks': [
            {   'name': 'simpleArbiterDhcp',
                # attempt automount
            },
            #{   'name': 'CDROM',
            #    'options': {'readonly': True},
            #    'parts': [{'dev': 'b1', 'path': '/cdrom'}],
            #},
        ],
        'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}],
        'flavor': 'm1.tiny',
        'config_drive': False
    }
}

networks = { 'net1': {'public': False}, 'test-net': {'public': True} }

params_meta = {
    'IP_NM': {'descriptions': {'si': 'Naslov maliNetworkManager'}, 'w': False, 'public':True, 'type': 'IP', 'generated': True},
}

def task(IP_NM, DNS_NM, IP_static, DNS_static):
    import pxssh
    import pexpect
    results = dict()
    peer_user = 'student'
    peer_passwd = 'vaje'
    sA = pxssh.pxssh()
    sB = pxssh.pxssh()
    sA.login(IP_NM, peer_user, peer_passwd)
    sB.login(IP_static, peer_user, peer_passwd)
    # sA
    # make sure NM is not handling eth0
    results['NM_nmcli'] = sA.run('nmcli d')
    results['NM_nslookup'] = sA.run('nslookup www.arnes.si')
    # sB
    # check whether NM is handling eth0
    results['static_nmcli'] = sB.run('nmcli d')
    results['static_nslookup'] = sB.run('nslookup www.arnes.si')
    sA.logout()
    sB.logout()
    return results
    
def gen_params(user_id, params_meta):
    import random
    params = dict()
    r = random.Random(user_id)
    # IP_NM, DNS_NM, IP_static, DNS_static)
    dns_servers = ['193.2.1.66', '193.2.1.72', '8.8.8.8', '8.8.4.4', '208.67.222.222', '208.67.220.220']
    net = kpov_random_helpers.IPv4_subnet_gen(r, '172.23.128.0/18', 24)
    params['DNS_NM'] = r.choice(dns_servers)
    params['IP_NM'], params['IP_static'] = kpov_random_helpers.IPv4_addr_gen(r, net, 2)
    params['DNS_static'] = r.choice(dns_servers)
    count = 0
    while(count<user_id):
    params[count]=random.randInt(10000000,99999999)
    count=count+1
	    return params

def task_check(results, params):
    import re
    score = 0
    
    #TO FINISH SCORING WE REQUIRE DICT KEYS AND FUNCTIONS gen_params AND task TO BE FINISHED
    #POINTS FOR EACH TASK MAY BE ADJUSTED IN THE FUTURE
    #TASK 1
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
        score += 1
    #TASK 2
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TASK 3
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TASK 4
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TAKS 5
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TASK 6
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TASK 7
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TASK 8
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 1
    #TASK 9
    if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm'])) > -1:
	score += 2

    return score

def prepare_disks(templates, params):
#    d = templates['simpleArbiterDhcp']
    pass