From 792b601a248a912532fb18a680f46ba2ab679849 Mon Sep 17 00:00:00 2001 From: "af7140@student.uni-lj.si" Date: Mon, 22 Dec 2014 19:29:08 +0000 Subject: git-svn-id: https://svn.lusy.fri.uni-lj.si/kpov-public-svn/kpov-public@128 5cf9fbd1-b2bc-434c-b4b7-e852f4f63414 --- kpov_judge/tasks/snmp_agent_uptime/task.py | 82 +++++++++++++++++------------- 1 file changed, 48 insertions(+), 34 deletions(-) (limited to 'kpov_judge/tasks') diff --git a/kpov_judge/tasks/snmp_agent_uptime/task.py b/kpov_judge/tasks/snmp_agent_uptime/task.py index c549480..e3f395c 100644 --- a/kpov_judge/tasks/snmp_agent_uptime/task.py +++ b/kpov_judge/tasks/snmp_agent_uptime/task.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python + #!/usr/bin/env python # -*- coding: utf-8 -*- # kpov_random_helpers should be imported by add_assignment.py @@ -20,7 +20,7 @@ NET-SNMP-EXTEND-MIB::nsExtendOutput2Table sporocal, koliko casa 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.2 + SNMPServer na OID 1.3.6.1.4.1.8072.1.3.2.4.1.4. Postavi jo na SNMP klienta, v domaci imenik uporabnika test z geslom test. Napiši skripto gen_params(), ki uporabnikom generira razlicne parametre in @@ -93,54 +93,68 @@ computers = { } networks = { 'net1': {'public': False}, 'test-net': {'public': True} } -w = ali lahko študent ta parameter spremeni -public = ali povemeo študentu parameter -type = tip spremenljivke -generated = ali se zgenerira -params_meta = { - 'SNMP_VALUE': {'descriptions': {'si': 'Vrednost, dostopna prek SNMP',...}Value:0, 'w': False, 'public':True, 'type': 'number', 'generated': True}, - 'SNMP_OID_ON_SERVER': {'descriptions': {'si': 'OID, na katerem je vrednost dostopna'},'OID':'1.3.6.1.4.1.8072.1.3.2.4', 'w': False, 'public':True, 'type': 'OID', 'generated': True}, - 'SNMP_OID_ON_CLIENT': {'descriptions': {'si': 'OID, ki naj ga klient bere'}'OID':'1.3.6.1.4.1.8072.1.3.2.4.1.4', 'w': False, 'public':True, 'type': 'OID', 'generated': True}, -} + +params_meta = {'SNMP_VALUE': {'descriptions': {'si': 'Vrednost, dostopna prek SNMP'}, 'w': False, 'public':True, 'type': 'number', 'generated': True}, 'SNMP_OID_ON_SERVER': {'descriptions': {'si': 'OID, na katerem je vrednost dostopna'}, 'w': False, 'public':True, 'type': 'str', 'generated': True}, 'SNMP_OID_ON_CLIENT': {'descriptions': {'si': '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): + print SNMP_VALUE + print SNMP_OID_ON_SERVER + print SNMP_OID_ON_CLIENT + + + # TODO (polz) start working on this. If gen_params doesn't yet work, change it to set the parameter values manually # 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 - import netsnmp - session = netsnmp.Session(DestHost=SNMP_VALUE['type'],Version=2,Community='public') + #import netsnmp + #session = netsnmp.Session(DestHost=SNMP_VALUE['type'],Version=2,Community='public') #Dobimo vrednost casa - vars=netsnmp.Varbind(SNMP_OID_ON_SERVER['type']) + #vars=netsnmp.Varbind(SNMP_OID_ON_SERVER['type']) #Shranimo vrednost casa v imenik od SNMP_OID_ON_SERVER - var=netsnmp.Varbind(SNMP_OID_ON_SERVER['descriptions'['si'],'0',session.get(vars),SNMP_OID_ON_SERVER['type']) - netsnmp.snmpset(var,Version=2,DestHost=SNMP_VALUE['type'],Community='public') + #var=netsnmp.Varbind(SNMP_OID_ON_SERVER['descriptions'['si'],'0',session.get(vars),SNMP_OID_ON_SERVER['type']) + #netsnmp.snmpset(var,Version=2,DestHost=SNMP_VALUE['type'],Community='public') - return session.get(vars) + #return session.get(vars) + return 0 def gen_params(user_id, params_meta): - params = dict() - r = random.randrange(1,255,1) - params_meta[SNMP_VAULE[Value]]=r - return r + import random + params = dict() + # TODO (polz) this is wrong. Try something like: + r = random.Random(user_id) + #params['SNMP_VALUE'] = r.randint(0, 255) + #params_meta['SNMP_OID_ON_SERVER'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4' + #params_meta['SNMP_OID_ON_CLIENT'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4.' + # You can also create an OID creation function in kpov_random_helpers. + # this should probably return params_meta + + params['SNMP_VALUE'] = str(r.randint(0, 255)) + params['SNMP_OID_ON_SERVER'] = 'NET-SNMP-EXTEND-MIB::nsExtendOutput2Table' + params['SNMP_OID_ON_CLIENT'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4' + + return params def task_check(results, params): -#cakam na predhodnike in pomagam tistim ki kaj ne vejo - 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 +# TODO (polz) Zacnite s pisanjem testov glede na to, kar vidite v task() + import re + score = 0 + 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 + return score def prepare_disks(templates, params): # d = templates['simpleArbiterDhcp'] pass + + + + -- cgit v1.2.1