summaryrefslogtreecommitdiff
path: root/kpov_judge/tasks/snmp_agent_uptime
diff options
context:
space:
mode:
authoraf7140@student.uni-lj.si <af7140@student.uni-lj.si@5cf9fbd1-b2bc-434c-b4b7-e852f4f63414>2014-12-24 22:46:04 +0000
committeraf7140@student.uni-lj.si <af7140@student.uni-lj.si@5cf9fbd1-b2bc-434c-b4b7-e852f4f63414>2014-12-24 22:46:04 +0000
commitd8e772e8e959ae213c84e34c8a4d2f7548ee7ce6 (patch)
treeacd36bd990bce26f58a0283b46d2b4752ac4059a /kpov_judge/tasks/snmp_agent_uptime
parent971fd805c282ae6d42877ff3c6cd015abff3c50e (diff)
def task(SNMP_VALUE, SNMP_OID_ON_SERVER, SNMP_OID_ON_CLIENT):
#<== Aleksander Fujs 6310020 ==> # TODO popravi IPje import netsnmp from paramiko import SSHClient return_results = {} client = SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect('10.173.146.199', username='root', password='kaboom') stdin, stdout, stderr = client.exec_command('uptime=$(</proc/uptime); uptime=${uptime%%.*}; echo $uptime') return_results['server_uptime'] = stdout.readlines() try: session = netsnmp.Session(DestHost='10.173.146.199', Version=2, Community='studentje') results_objs = netsnmp.VarList(netsnmp.Varbind(SNMP_OID_ON_SERVER)) #117.112.116.105.109.101 <-uptime session.walk(results_objs) for result in results_objs: return_results['server_OID'] = ('%s.%s: %s') % (result.tag, result.iid, result.val) except Exception as exception_error: # Check for errors and print out results print ('ERROR: Occurred during SNMPget for OID %s from %s: ' '(%s)') % (SNMP_OID_ON_SERVER, '10.173.146.194', exception_error) sys.exit(2) client.connect('10.173.146.194', username='test', password='test') stdin, stdout, stderr = client.exec_command('/bin/bash /home/test/upminutes.sh') #TODO preverit da ni v skripti hardcodan return_results['client_script'] = stdout.readlines() stdin, stdout, stderr = client.exec_command('uptime=$(</proc/uptime); uptime=${uptime%%.*}; echo $(( uptime/60 ))') return_results['client_uptime'] = stdout.readlines() #TODO add 3 part of assigement return return_results #<== Aleksander Fujs 6310020 ==> # 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') #Dobimo vrednost casa #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['decdscriptions'['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 0 def gen_params(user_id, params_meta): 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 #<== Aleksander Fujs 6310020 ==> #TODO better random value params['SNMP_VALUE'] = str(r.randint(0, 255)) params['SNMP_OID_ON_SERVER'] = 'NET-SNMP-EXTEND-MIB::nsExtendOutput2Table' #TODO possible upgrade for last number to bi random between 0 and 255 params['SNMP_OID_ON_CLIENT'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4' #<== Aleksander Fujs 6310020 ==> return params def task_check(results, params): #TODO improve regex import re score = 0 print results if re.search(results['client_script'][0].strip(), results['client_uptime'][0].strip()): score += 3 #TODO +- second or two of allowed error time if re.search(results['server_OID'].split(':')[1].strip(), results['server_uptime'][0].strip()): score += 3 print results['server_uptime'][0].strip() print results['server_OID'].split(':')[1].strip() print score return score git-svn-id: https://svn.lusy.fri.uni-lj.si/kpov-public-svn/kpov-public@134 5cf9fbd1-b2bc-434c-b4b7-e852f4f63414
Diffstat (limited to 'kpov_judge/tasks/snmp_agent_uptime')
-rw-r--r--kpov_judge/tasks/snmp_agent_uptime/task.py80
1 files changed, 60 insertions, 20 deletions
diff --git a/kpov_judge/tasks/snmp_agent_uptime/task.py b/kpov_judge/tasks/snmp_agent_uptime/task.py
index da55b42..13abf92 100644
--- a/kpov_judge/tasks/snmp_agent_uptime/task.py
+++ b/kpov_judge/tasks/snmp_agent_uptime/task.py
@@ -16,7 +16,7 @@ vklopljen.
Postavi ga na SNMPClient v domaci imenik uporabnika test z geslom test.
Poskrbi, da bo SNMP strežnik prek SNMP pod
-NET-SNMP-EXTEND-MIB::nsExtendOutput2Table sporocal, koliko casa je vklopljen
+NET-SNMP-EXTEND-MIB::nsExtendOutpucd k t2Table sporocal, koliko casa je vklopljen
v sekundah.
Napiši skripto, poimenovano beri.sh, ki prek SNMP prebere vrednost s strežnika
@@ -93,10 +93,45 @@ networks = { 'net1': {'public': False}, 'test-net': {'public': 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
-
+ #<== Aleksander Fujs 6310020 ==>
+ # TODO popravi IPje
+ import netsnmp
+ from paramiko import SSHClient
+ return_results = {}
+
+ client = SSHClient()
+ client.load_system_host_keys()
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+
+ client.connect('10.173.146.199', username='root', password='kaboom')
+ stdin, stdout, stderr = client.exec_command('uptime=$(</proc/uptime); uptime=${uptime%%.*}; echo $uptime')
+ return_results['server_uptime'] = stdout.readlines()
+
+ try:
+ session = netsnmp.Session(DestHost='10.173.146.199', Version=2, Community='studentje')
+ results_objs = netsnmp.VarList(netsnmp.Varbind(SNMP_OID_ON_SERVER)) #117.112.116.105.109.101 <-uptime
+ session.walk(results_objs)
+ for result in results_objs:
+ return_results['server_OID'] = ('%s.%s: %s') % (result.tag, result.iid, result.val)
+ except Exception as exception_error:
+ # Check for errors and print out results
+ print ('ERROR: Occurred during SNMPget for OID %s from %s: '
+ '(%s)') % (SNMP_OID_ON_SERVER, '10.173.146.194', exception_error)
+ sys.exit(2)
+
+
+ client.connect('10.173.146.194', username='test', password='test')
+ stdin, stdout, stderr = client.exec_command('/bin/bash /home/test/upminutes.sh')
+ #TODO preverit da ni v skripti hardcodan
+ return_results['client_script'] = stdout.readlines()
+ stdin, stdout, stderr = client.exec_command('uptime=$(</proc/uptime); uptime=${uptime%%.*}; echo $(( uptime/60 ))')
+ return_results['client_uptime'] = stdout.readlines()
+
+ #TODO add 3 part of assigement
+ return return_results
+
+
+ #<== Aleksander Fujs 6310020 ==>
# 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
@@ -120,33 +155,38 @@ def gen_params(user_id, params_meta):
params = dict()
# TODO (polz) this is wrong. Try something like:
r = random.Random(user_id)
- params['SNMP_VALUE'] = r.randint(0, 255)
- params['SNMP_OID_ON_SERVER'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4'
- params['SNMP_OID_ON_CLIENT'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4.'
+ #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
+ #<== Aleksander Fujs 6310020 ==>
+ #TODO better random value
+ params['SNMP_VALUE'] = str(r.randint(0, 255))
+ params['SNMP_OID_ON_SERVER'] = 'NET-SNMP-EXTEND-MIB::nsExtendOutput2Table'
+ #TODO possible upgrade for last number to bi random between 0 and 255
+ params['SNMP_OID_ON_CLIENT'] = '1.3.6.1.4.1.8072.1.3.2.4.1.4'
+ #<== Aleksander Fujs 6310020 ==>
+
return params
def task_check(results, params):
-# TODO (polz) Zacnite s pisanjem testov glede na to, kar vidite v task()
+ #TODO improve regex
import re
score = 0
- if results['NM_nslookup'].find('Server:\t\t{0}\r'.format(params['DNS_NM'])) > -1:
+ print results
+ if re.search(results['client_script'][0].strip(), results['client_uptime'][0].strip()):
score += 3
- if results['static_nslookup'].find('Server:\t\t{0}\r'.format(params['DNS_static'])) > -1:
+ #TODO +- second or two of allowed error time
+ if re.search(results['server_OID'].split(':')[1].strip(), results['server_uptime'][0].strip()):
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
+
+ print results['server_uptime'][0].strip()
+ print results['server_OID'].split(':')[1].strip()
+ print score
return score
def prepare_disks(templates, params):
# d = templates['simpleArbiterDhcp']
pass
-
-
-
-
-