#!/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
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
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 -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