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
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# kpov_random_helpers should be imported by add_assignment.py
instructions = {
'si':u"""
Postavi dva navidezna računalnika - SimpleArbiter z diska SimpleArbiterVPN ter
VPNClient, ki jima nastavite pravilne mrežne nastavitve (medsebojna povezava in povezava na splet). Na oba računalnika namestite OpenVPN in program za nadzor nad virtualnimi napravami (s katerim kreirate napravo tap).Strežnik SimpleArbiterVPN naj generira skupno skrivnost (*.key), ki jo na VPNCLient uporabite skupaj z konfiguracijsko datoteko za OpenVPN povezavo. Nato poskrbite, da bo VPNClient na navideznem omrežju prek NFS omogočil
dostop do imenika /home/test/IME_IMENIKA, pri čemer IME_IMENIKA preberite na SimpleArbiter.
V ta imenik skopirajte datoteke, ki so prek SMB dostopne na SimpleArbiter.
"""
}
computers = {
'maliNetworkManager': {
'disks': [
{ 'name': 'maliNetworkManager',
},
#{ 'name': 'CDROM',
# 'options':{'readonly': True},
# 'parts': [],# no parts, no mounting.
#}
],
'network_interfaces': [{'network': 'net1'}],
'flavor': 'm1.tiny',
'config_drive': False
},
'maliBrezNetworkManager': {
'disks': [
{ 'name': 'maliBrezNetworkManager',
},
#{ '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},
'DNS_NM': {'descriptions': {'si': 'DNS za maliNetworkManager'}, 'w': False, 'public':True, 'type': 'IP', 'generated': True},
'IP_static': {'descriptions': {'si': 'Naslov maliBrezNetworkManager'}, 'w': False, 'public': True, 'type': 'IP', 'generated': True},
'DNS_static': {'descriptions': {'si': 'DNS za maliBrezNetworkManager'}, '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):
alpha = "abcdefghijklmnoprstuvzxyqw"
alphaupp = "ABCDEFGHIJKLMNOPRSTUVZQWXY"
alpha2 = ['$','?','!',"%","&"]
alpha3 = ['IT','DH','JF','PO','LZ']
temp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
hash = ""
for x in temp:
for i in x:
if int(i)<5:
hash+=random.choice(alpha)+alpha2[int(i)]
else:
hash+=random.choice(alphaupp)+alpha3[int(i)-5]
hash+=":"+temp
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)
params[user_id]=hash
return params
def task_check(results, params):
import re
score = -9
if results['NM_nslookup'].find('Server:\t\t{0}\r'.format(params['DNS_NM'])) > -1:
score += 3
if results['static_nslookup'].find('Server:\t\t{0}\r'.format(params['DNS_static'])) > -1:
score += 3
if re.search(r'eth0 +802-.*connected', results['NM_nmcli']):
score += 2
if not re.search(r'eth0 +802-.*connected', results['static_nmcli']):
score += 2
score = 0
return score
def prepare_disks(templates, params):
d = templates['simpleArbiterDhcp']
guestmount -a d -m /dev/VG/LV -m /dev/sda1:/boot --ro /mnt
pass
|