diff options
Diffstat (limited to 'kpov_judge/tasks/snmp_agent_uptime')
-rw-r--r-- | kpov_judge/tasks/snmp_agent_uptime/lecture/ideja.txt | 2 | ||||
-rw-r--r-- | kpov_judge/tasks/snmp_agent_uptime/task.py | 104 |
2 files changed, 106 insertions, 0 deletions
diff --git a/kpov_judge/tasks/snmp_agent_uptime/lecture/ideja.txt b/kpov_judge/tasks/snmp_agent_uptime/lecture/ideja.txt new file mode 100644 index 0000000..0832279 --- /dev/null +++ b/kpov_judge/tasks/snmp_agent_uptime/lecture/ideja.txt @@ -0,0 +1,2 @@ +Postavi SNMP strežnik. Preberi podatke z njega. Dodaj agenta za temp. procesorja. Namesti CACTI. Nastavi CACTI, da bo bral podatke s strežnika. + diff --git a/kpov_judge/tasks/snmp_agent_uptime/task.py b/kpov_judge/tasks/snmp_agent_uptime/task.py new file mode 100644 index 0000000..7bd6069 --- /dev/null +++ b/kpov_judge/tasks/snmp_agent_uptime/task.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# kpovRandomHelpers should be imported by add_assignment.py +# TODO: finish this. + +instructions = { + 'si':u""" +Postavi tri navidezne računalnike - SimpleArbiter s sliko diska simpleArbiterDhcp, +SNMPServer in SNMPClient. Napiši program upminutes, ki bo izpisal, kako dolgo je računalnik vklopljen v minutah. +Postavi ga na SNMPClient v domači imenik uporabnika test z geslom test. + +Poskrbi, da bo SNMP strežnik prek SNMP pod NET-SNMP-EXTEND-MIB::nsExtendOutput2Table sporočal, kako dolgo je vklopljen v sekundah. + +Napiši skripto, poimenovano beri.sh, ki prek SNMP prebere vrednost s strežnika SNMPServer na OID 1.3.6.1.4.1.8072.1.3.2.4.1.4. +Postavi jo na SNMP klienta, v domači imenik uporabnika test z geslom test. +""" +} + + +computers = { + 'SNMPClient': { + 'disks': [ + { 'name': 'SNMPClient', + + }, + #{ 'name': 'CDROM', + # 'options':{'readonly': True}, + # 'parts': [],# no parts, no mounting. + #} + ], + 'network_interfaces': [{'network': 'net1'}], + 'flavor': 'm1.tiny', + 'config_drive': False + }, + 'SNMPServer': { + 'disks': [ + { 'name': 'SNMPServer', + }, + #{ '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 = { + 'SNMP_VALUE': {'opis': 'Vrednost, dostopna prek SNMP', 'w': False, 'public':True, 'type': 'number', 'generated': True}, + 'SNMP_OID_ON_SERVER': {'opis': 'OID, na katerem je vrednost dostopna', 'w': False, 'public':True, 'type': 'OID', 'generated': True}, + 'SNMP_OID_ON_CLIENT': {'opis': 'OID, ki naj ga klient bere', 'w': False, 'public':True, 'type': 'OID', 'generated': True}, +} + +def task(SNMP_VALUE, SNMP_OID_ON_SERVER, SNMP_OID_ON_CLIENT): + # run cpu temp script on client + # run SNMP read SNMP_OID_ON_CLIENT script on client + # read data on SNMP_OID_ON_CLIENT + # read data from SNMP server + return results + +def gen_params(user_id, params_meta): + params = dict() + r = random.Random(user_id) + 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'] + pass + |