1 /*! \file snmp_example.py
6 """snmp_example.py: OpEN API Simple Network Management Protocol (SNMP) configuration example"""
14 from sys
import version_info
44 (
"admin1",
"network-admin1", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_NONE,
"",
"", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE,
"",
"",
""),
45 (
"admin2",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"ThisIsaShaPasswordThatIs32Chars.",
"", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE,
"",
"",
"0123456789abcdef"),
46 (
"admin3",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"",
"ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_NONE,
"",
"",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
47 (
"admin4",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"ThisIsaShaPasswordThatIs32Chars.",
"", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES,
"ThisIsaDesPasswordThatIs32Chars.",
"",
"cccccccccccccccccccccccccccccccc"),
48 (
"admin5",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"",
"ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES,
"",
"ThisIsaDesKeywordThatMustBe32chr",
"dddddddddddddddddddddddddddddddd"),
49 (
"delete-user",
"network-admin", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_SHA,
"",
"ThisIsaShaKeywordThatMustBe48CharactersInLength.", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_DES,
"",
"ThisIsaDesKeywordThatMustBe32chr",
"dddddddddddddddddddddddddddddddd"),
54 (
"network-admin", OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV,
"context-1",
"view-1",
"view-1",
"view-1"),
55 (
"network-guest", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV1, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV,
"context-2",
"view-2",
"view-2",
"view-2"),
56 (
"delete-group", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV,
"context-3",
"view-3",
"view-3",
"view-3"),
61 (
"view-1",
"1.3.6.1.4.1.4413", OpEN.OPEN_SNMP_VIEW_TYPE_INCLUDED),
62 (
"view-2",
"ifEntry.*.1", OpEN.OPEN_SNMP_VIEW_TYPE_EXCLUDED),
67 (
"filter-1",
"1.3.6.1.4.1.4413", OpEN.OPEN_SNMP_VIEW_TYPE_INCLUDED),
68 (
"filter-2",
"ifEntry.*.1", OpEN.OPEN_SNMP_VIEW_TYPE_EXCLUDED),
73 (
"10.10.10.1", 0,
"public", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV1, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP, 0, 0,
""),
74 (
"10.10.10.2", 0,
"public", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV, OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP, 0, 0,
""),
75 (
"2001::", 65535,
"admin", OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV, OpEN.OPEN_SNMP_NOTIFY_TYPE_INFORM, 100, 200,
"ipv6-filter"),
79 SNMP_COMMUNITY_LIST = [
80 {SET:[
"public-test", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_NONE,
"view_test",
"20.20.20.1"]},
81 {SET:[
"private-test", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_RW,
"",
""]},
82 {SET:[
"delete-community", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_RO,
"",
""]},
83 {MAP:[
"delete-private-map", OpEN.OPENAPI_SNMP_DEFAULT_WRITE_STR,
"30.30.30.1"]},
87 """Convert ipv4 string to integer"""
89 return struct.unpack(
"!I", socket.inet_aton(addr))[0]
92 """Convert ipv4 integer to string"""
94 return socket.inet_ntoa(struct.pack(
"!I", addr))
96 def ipv6_to_int(addr):
97 """Convert ipv6 string to integer"""
99 str_ = socket.inet_pton(socket.AF_INET6, addr)
100 a, b = struct.unpack(
'!2Q', str_)
103 def int_to_ipv6(addr):
104 """Convert ipv6 integer to string"""
107 b = addr & ((1 << 64) - 1)
108 return socket.inet_ntop(socket.AF_INET6, struct.pack(
'!2Q', a, b))
110 def get_type(itype) :
111 """Return text representation based on interface type"""
113 if itype == OpEN.OPEN_INTF_TYPE_PHY:
115 elif itype == OpEN.OPEN_INTF_TYPE_VLAN:
117 elif itype == OpEN.OPEN_INTF_TYPE_LOOPBACK:
119 elif itype == OpEN.OPEN_INTF_TYPE_TUNNEL:
125 if state == OpEN.OPEN_LINK_UP:
127 elif state == OpEN.OPEN_LINK_DOWN:
132 def print_sanity_results(result, test, msg, feat):
133 """Print overall comparison results"""
135 if result == OpEN.OPEN_E_UNAVAIL:
136 print(
"Sanity test skipped.")
137 elif result == OpEN.OPEN_E_EXISTS:
138 print(
"Sanity Skipped (already exists) - %s - %s." % (msg, feat))
139 elif result == OpEN.OPEN_E_NONE
and test ==
True:
140 print(
"Sanity Success - %s - %s." % (msg, feat))
142 print(
"Sanity Failure - %s - %s." % (msg, feat))
144 def print_bad_result(result, msg):
145 """Print some general error messages if the result is bad"""
147 if result == OpEN.OPEN_E_UNAVAIL:
148 print(
"Feature not supported - %s (err %d)." % (msg, result))
149 elif result == OpEN.OPEN_E_NOT_FOUND:
150 print(
"Test Skipped (not found) - ", msg)
151 elif result != OpEN.OPEN_E_NONE:
152 print(
"Test Failure - %s (err %d)." % (msg, result))
155 """Simple SNMP class implementing basic CRUD examples """
157 def __init__(self, client) :
158 self.m_client = client
160 def test_snmp_sys_name_set(self, name) :
161 """Set the SNMP system name.
163 An administratively-assigned name for this managed node.
164 By convention, this is the node's fully-qualified domain name."""
167 name_string = open_.getStringBuffer(len(name) + 1, name)
168 except OpENBufferSizeError:
169 print(
"test_snmp_sys_name_set: getStringBuffer raised OpENBufferSizeError")
172 print(
"test_snmp_sys_name_set: getStringBuffer raised TypeError")
174 name_buff = OpEN.open_buffdesc()
175 name_buff.pstart = name_string
176 name_buff.size = len(name)+1
178 result = OpEN.openapiSnmpSysNameSet(self.m_client, name_buff)
179 print_bad_result(result,
'openapiSnmpSysNameSet')
180 print_sanity_results(result, (1 == 1),
'openapiSnmpSysNameSet', name_string.cast())
182 def test_snmp_sys_location_set(self, location) :
183 """Set the SNMP system location.
184 The physical location of this node, for example;
185 'telephone closet' or '3rd floor'."""
188 name_string = open_.getStringBuffer(len(location) + 1, location)
189 except OpENBufferSizeError:
190 print(
"test_snmp_sys_location_set: getStringBuffer raised OpENBufferSizeError")
193 print(
"test_snmp_sys_location_set: getStringBuffer raised TypeError")
195 name_buff = OpEN.open_buffdesc()
196 name_buff.pstart = name_string
197 name_buff.size = len(location)+1
199 result = OpEN.openapiSnmpSysLocationSet(self.m_client, name_buff)
200 print_bad_result(result,
'openapiSnmpSysLocationSet')
201 print_sanity_results(result, (1 == 1),
'openapiSnmpSysLocationSet', name_string.cast())
203 def test_snmp_sys_contact_set(self, contact) :
204 """Set the SNMP system contact.
206 The textual identification of the contact person for this managed node,
207 together with information on how to contact this person."""
210 name_string = open_.getStringBuffer(len(contact) + 1, contact)
211 except OpENBufferSizeError:
212 print(
"test_snmp_sys_contact_set: getStringBuffer raised OpENBufferSizeError")
215 print(
"test_snmp_sys_contact_set: getStringBuffer raised TypeError")
217 name_buff = OpEN.open_buffdesc()
218 name_buff.pstart = name_string
219 name_buff.size = len(contact)+1
221 result = OpEN.openapiSnmpSysContactSet(self.m_client, name_buff)
222 print_bad_result(result,
'openapiSnmpSysContactSet')
223 print_sanity_results(result, (1 == 1),
'openapiSnmpSysContactSet', name_string.cast())
225 def test_snmp_local_engine_id_set(self, engine_id) :
226 """Set the SNMP engine id on the local device."""
228 if engine_id ==
'default':
232 name_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
233 except OpENBufferSizeError:
234 print(
"test_snmp_local_engine_id_set: getStringBuffer raised OpENBufferSizeError")
237 print(
"test_snmp_local_engine_id_set: getStringBuffer raised TypeError")
239 name_buff = OpEN.open_buffdesc()
240 name_buff.pstart = name_string
241 name_buff.size = len(engine_id)+1
243 result = OpEN.openapiSnmpLocalEngineIdSet(self.m_client, name_buff)
244 print_bad_result(result,
'openapiSnmpLocalEngineIdSet')
245 print_sanity_results(result, (1 == 1),
'openapiSnmpLocalEngineIdSet', name_string.cast())
247 def test_snmp_user_create(self, user_list) :
248 """Create a new SNMP user"""
250 for val
in user_list:
262 name_string = open_.getStringBuffer(len(name) + 1, name)
263 except OpENBufferSizeError:
264 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
267 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
269 name_buff = OpEN.open_buffdesc()
270 name_buff.pstart = name_string
271 name_buff.size = len(name)+1
274 group_string = open_.getStringBuffer(len(group) + 1, group)
275 except OpENBufferSizeError:
276 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
279 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
281 group_buff = OpEN.open_buffdesc()
282 group_buff.pstart = group_string
283 group_buff.size = len(group)+1
286 auth_pwd_string = open_.getStringBuffer(len(auth_pwd) + 1, auth_pwd)
287 except OpENBufferSizeError:
288 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
291 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
293 auth_pwd_buff = OpEN.open_buffdesc()
294 auth_pwd_buff.pstart = auth_pwd_string
295 auth_pwd_buff.size = len(auth_pwd)+1
298 auth_key_string = open_.getStringBuffer(len(auth_key) + 1, auth_key)
299 except OpENBufferSizeError:
300 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
303 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
305 auth_key_buff = OpEN.open_buffdesc()
306 auth_key_buff.pstart = auth_key_string
307 auth_key_buff.size = len(auth_key)+1
310 priv_pwd_string = open_.getStringBuffer(len(priv_pwd) + 1, priv_pwd)
311 except OpENBufferSizeError:
312 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
315 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
317 priv_pwd_buff = OpEN.open_buffdesc()
318 priv_pwd_buff.pstart = priv_pwd_string
319 priv_pwd_buff.size = len(priv_pwd)+1
322 priv_key_string = open_.getStringBuffer(len(priv_key) + 1, priv_key)
323 except OpENBufferSizeError:
324 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
327 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
329 priv_key_buff = OpEN.open_buffdesc()
330 priv_key_buff.pstart = priv_key_string
331 priv_key_buff.size = len(priv_key)+1
334 engine_id_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
335 except OpENBufferSizeError:
336 print(
"test_snmp_user_create: getStringBuffer raised OpENBufferSizeError")
339 print(
"test_snmp_user_create: getStringBuffer raised TypeError")
341 engine_id_buff = OpEN.open_buffdesc()
342 engine_id_buff.pstart = engine_id_string
343 engine_id_buff.size = len(engine_id)+1
345 result = OpEN.openapiSnmpUserCreate(self.m_client,
346 name_buff, group_buff,
347 auth_proto, auth_pwd_buff, auth_key_buff,
348 priv_proto, priv_pwd_buff, priv_key_buff,
350 print_sanity_results(result, (1 == 1),
'openapiSnmpUserCreate', name_string.cast())
352 def test_snmp_group_create(self, group_list) :
353 """Create a new SNMP group"""
355 for val
in group_list:
357 security_model = val[1]
358 security_level = val[2]
359 context_prefix = val[3]
365 group_string = open_.getStringBuffer(len(group) + 1, group)
366 except OpENBufferSizeError:
367 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
370 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
372 group_buff = OpEN.open_buffdesc()
373 group_buff.pstart = group_string
374 group_buff.size = len(group)+1
377 context_prefix_string = open_.getStringBuffer(len(context_prefix) + 1, context_prefix)
378 except OpENBufferSizeError:
379 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
382 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
384 context_prefix_buff = OpEN.open_buffdesc()
385 context_prefix_buff.pstart = context_prefix_string
386 context_prefix_buff.size = len(context_prefix)+1
389 read_view_string = open_.getStringBuffer(len(read_view) + 1, read_view)
390 except OpENBufferSizeError:
391 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
394 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
396 read_view_buff = OpEN.open_buffdesc()
397 read_view_buff.pstart = read_view_string
398 read_view_buff.size = len(read_view)+1
401 write_view_string = open_.getStringBuffer(len(write_view) + 1, write_view)
402 except OpENBufferSizeError:
403 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
406 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
408 write_view_buff = OpEN.open_buffdesc()
409 write_view_buff.pstart = write_view_string
410 write_view_buff.size = len(write_view)+1
413 notify_view_string = open_.getStringBuffer(len(notify_view) + 1, notify_view)
414 except OpENBufferSizeError:
415 print(
"test_snmp_group_create: getStringBuffer raised OpENBufferSizeError")
418 print(
"test_snmp_group_create: getStringBuffer raised TypeError")
420 notify_view_buff = OpEN.open_buffdesc()
421 notify_view_buff.pstart = notify_view_string
422 notify_view_buff.size = len(notify_view)+1
424 result = OpEN.openapiSnmpGroupCreate(self.m_client,
425 group_buff, security_model, security_level,
426 context_prefix_buff, read_view_buff, write_view_buff, notify_view_buff)
427 print_sanity_results(result, (1 == 1),
'openapiSnmpGroupCreate', group_string.cast())
429 def test_snmp_view_create(self, view_list) :
430 """Create a new SNMP view"""
432 for val
in view_list:
438 view_name_string = open_.getStringBuffer(len(view_name) + 1, view_name)
439 except OpENBufferSizeError:
440 print(
"test_snmp_view_create: getStringBuffer raised OpENBufferSizeError")
443 print(
"test_snmp_view_create: getStringBuffer raised TypeError")
445 view_name_buff = OpEN.open_buffdesc()
446 view_name_buff.pstart = view_name_string
447 view_name_buff.size = len(view_name)+1
450 oid_tree_string = open_.getStringBuffer(len(oid_tree) + 1, oid_tree)
451 except OpENBufferSizeError:
452 print(
"test_snmp_view_create: getStringBuffer raised OpENBufferSizeError")
455 print(
"test_snmp_view_create: getStringBuffer raised TypeError")
457 oid_tree_buff = OpEN.open_buffdesc()
458 oid_tree_buff.pstart = oid_tree_string
459 oid_tree_buff.size = len(oid_tree)+1
461 result = OpEN.openapiSnmpViewCreate(self.m_client, view_name_buff, oid_tree_buff, view_type)
462 print_sanity_results(result, (1 == 1),
'openapiSnmpViewCreate', view_name_string.cast())
464 def test_snmp_filter_create(self, filter_list) :
465 """Create a new SNMP filter"""
467 for val
in filter_list:
473 filter_name_string = open_.getStringBuffer(len(filter_name) + 1, filter_name)
474 except OpENBufferSizeError:
475 print(
"test_snmp_filter_create: getStringBuffer raised OpENBufferSizeError")
478 print(
"test_snmp_filter_create: getStringBuffer raised TypeError")
480 filter_name_buff = OpEN.open_buffdesc()
481 filter_name_buff.pstart = filter_name_string
482 filter_name_buff.size = len(filter_name)+1
485 oid_tree_string = open_.getStringBuffer(len(oid_tree) + 1, oid_tree)
486 except OpENBufferSizeError:
487 print(
"test_snmp_filter_create: getStringBuffer raised OpENBufferSizeError")
490 print(
"test_snmp_filter_create: getStringBuffer raised TypeError")
492 oid_tree_buff = OpEN.open_buffdesc()
493 oid_tree_buff.pstart = oid_tree_string
494 oid_tree_buff.size = len(oid_tree)+1
496 result = OpEN.openapiSnmpFilterCreate(self.m_client, filter_name_buff, oid_tree_buff, view_type)
497 print_sanity_results(result, (1 == 1),
'openapiSnmpFilterCreate', filter_name_string.cast())
499 def test_snmp_host_create(self, host_list) :
500 """Create a new SNMP host"""
502 for val
in host_list:
505 security_name = val[2]
506 security_model = val[3]
507 security_level = val[4]
514 host_string = open_.getStringBuffer(len(host) + 1, host)
515 except OpENBufferSizeError:
516 print(
"test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
519 print(
"test_snmp_host_create: getStringBuffer raised TypeError")
521 host_buff = OpEN.open_buffdesc()
522 host_buff.pstart = host_string
523 host_buff.size = len(host)+1
526 security_name_string = open_.getStringBuffer(len(security_name) + 1, security_name)
527 except OpENBufferSizeError:
528 print(
"test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
531 print(
"test_snmp_host_create: getStringBuffer raised TypeError")
533 security_name_buff = OpEN.open_buffdesc()
534 security_name_buff.pstart = security_name_string
535 security_name_buff.size = len(security_name)+1
538 filter_name_string = open_.getStringBuffer(len(filter_name) + 1, filter_name)
539 except OpENBufferSizeError:
540 print(
"test_snmp_host_create: getStringBuffer raised OpENBufferSizeError")
543 print(
"test_snmp_host_create: getStringBuffer raised TypeError")
545 filter_name_buff = OpEN.open_buffdesc()
546 filter_name_buff.pstart = filter_name_string
547 filter_name_buff.size = len(filter_name)+1
549 result = OpEN.openapiSnmpHostCreate(self.m_client,
550 host_buff, server_port,
551 security_name_buff, security_model, security_level,
552 notify_type, timeout, retries, filter_name_buff)
553 print_sanity_results(result, (1 == 1),
'openapiSnmpHostCreate', host_string.cast())
555 def test_snmp_community_create(self, community_list) :
556 """Create a new SNMP community
558 SET key defines a basic community creation.
559 MAP key indicates a map to a new internal security name for SNMP v1 and SNMP v2 security
560 models to an existing group name."""
562 for community
in community_list:
563 for key, val
in community.items():
572 name_string = open_.getStringBuffer(len(name) + 1, name)
573 except OpENBufferSizeError:
574 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
577 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
579 name_buff = OpEN.open_buffdesc()
580 name_buff.pstart = name_string
581 name_buff.size = len(name)+1
584 view_string = open_.getStringBuffer(len(view) + 1, view)
585 except OpENBufferSizeError:
586 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
589 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
591 view_buff = OpEN.open_buffdesc()
592 view_buff.pstart = view_string
593 view_buff.size = len(view)+1
595 ip_addr = OpEN.open_inet_addr_t()
597 ip_addr.addr.ipv4 = ip_to_int(address)
598 ip_addr.family = socket.AF_INET
600 result = OpEN.openapiSnmpCommunityCreate(self.m_client, name_buff, access, view_buff, ip_addr)
601 print_sanity_results(result, (1 == 1),
'openapiSnmpCommunityCreate', name_string.cast())
609 name_string = open_.getStringBuffer(len(name) + 1, name)
610 except OpENBufferSizeError:
611 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
614 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
616 name_buff = OpEN.open_buffdesc()
617 name_buff.pstart = name_string
618 name_buff.size = len(name)+1
621 map_name_string = open_.getStringBuffer(len(map_name) + 1, map_name)
622 except OpENBufferSizeError:
623 print(
"test_snmp_community_create: getStringBuffer raised OpENBufferSizeError")
626 print(
"test_snmp_community_create: getStringBuffer raised TypeError")
628 map_name_buff = OpEN.open_buffdesc()
629 map_name_buff.pstart = map_name_string
630 map_name_buff.size = len(map_name)+1
632 ip_addr = OpEN.open_inet_addr_t()
634 ip_addr.addr.ipv4 = ip_to_int(address)
635 ip_addr.family = socket.AF_INET
637 result = OpEN.openapiSnmpCommunityGroupCreate(self.m_client, name_buff, map_name_buff, ip_addr)
638 print_sanity_results(result, (1 == 1),
'openapiSnmpCommunityGroupCreate', name_string.cast())
640 def testSnmpTrapFlagSet(self, flags, mode) :
641 """Enable or disable the traps identified via the flags selection"""
649 result = OpEN.openapiSnmpTrapFlagSet(self.m_client, flag_bits, val)
650 print_sanity_results(result, (1 == 1),
'openapiSnmpTrapFlagSet', str(flag_bits))
652 def test_snmp_sys_name_get(self) :
653 """Get the SNMP system name.
655 An administratively-assigned name for this managed node.
656 By convention, this is the node's fully-qualified domain name."""
661 name_string = open_.getStringBuffer(max_len)
662 except OpENBufferSizeError:
663 print(
"test_snmp_sys_name_get: getStringBuffer raised OpENBufferSizeError")
666 print(
"test_snmp_sys_name_get: getStringBuffer raised TypeError")
668 name_buff = OpEN.open_buffdesc()
669 name_buff.pstart = name_string
670 name_buff.size = max_len
672 result = OpEN.openapiSnmpSysNameGet(self.m_client, name_buff)
673 print_bad_result(result,
'openapiSnmpSysNameGet')
674 print_sanity_results(result, (1 == 1),
'openapiSnmpSysNameGet', name_string.cast())
676 def test_snmp_sys_location_get(self) :
677 """Get the SNMP system location.
679 The physical location of this node, for example;
680 'telephone closet' or '3rd floor'."""
685 name_string = open_.getStringBuffer(max_len)
686 except OpENBufferSizeError:
687 print(
"test_snmp_sys_location_get: getStringBuffer raised OpENBufferSizeError")
690 print(
"test_snmp_sys_location_get: getStringBuffer raised TypeError")
692 name_buff = OpEN.open_buffdesc()
693 name_buff.pstart = name_string
694 name_buff.size = max_len
696 result = OpEN.openapiSnmpSysLocationGet(self.m_client, name_buff)
697 print_bad_result(result,
'openapiSnmpSysLocationGet')
698 print_sanity_results(result, (1 == 1),
'openapiSnmpSysLocationGet', name_string.cast())
700 def test_snmp_sys_contact_get(self) :
701 """Get the SNMP system contact.
703 The textual identification of the contact person for this managed node,
704 together with information on how to contact this person."""
709 name_string = open_.getStringBuffer(max_len)
710 except OpENBufferSizeError:
711 print(
"test_snmp_sys_contact_get: getStringBuffer raised OpENBufferSizeError")
714 print(
"test_snmp_sys_contact_get: getStringBuffer raised TypeError")
716 name_buff = OpEN.open_buffdesc()
717 name_buff.pstart = name_string
718 name_buff.size = max_len
720 result = OpEN.openapiSnmpSysContactGet(self.m_client, name_buff)
721 print_bad_result(result,
'openapiSnmpSysContactGet')
722 print_sanity_results(result, (1 == 1),
'openapiSnmpSysContactGet', name_string.cast())
724 def test_snmp_local_engine_id_get(self) :
725 """Get the SNMP engine id on the local device."""
730 engine_id_string = open_.getStringBuffer(max_len)
731 except OpENBufferSizeError:
732 print(
"test_snmp_local_engine_id_get: getStringBuffer raised OpENBufferSizeError")
735 print(
"test_snmp_local_engine_id_get: getStringBuffer raised TypeError")
737 engine_id_buff = OpEN.open_buffdesc()
738 engine_id_buff.pstart = engine_id_string
739 engine_id_buff.size = max_len
740 result = OpEN.openapiSnmpLocalEngineIdGet(self.m_client, engine_id_buff)
741 print_bad_result(result,
'openapiSnmpLocalEngineIdGet')
743 if result == OpEN.OPEN_E_NONE:
745 if version_info >= (3,0,0):
746 for idx
in range(0, engine_id_buff.size):
747 engine_id += engine_id_string[idx].encode(
'hex')
749 for idx
in xrange(0, engine_id_buff.size):
750 engine_id += engine_id_string[idx].encode(
'hex')
752 print_sanity_results(result, (1 == 1),
'openapiSnmpLocalEngineIdGet', engine_id)
754 def test_snmp_user_get(self, user_name) :
755 """Get the specified SNMP user"""
759 max_engine_id_len = 32+1
761 auth_p = OpEN.new_OPEN_USM_USER_AUTH_PROTOCOL_tp()
762 priv_p = OpEN.new_OPEN_USM_USER_PRIV_PROTOCOL_tp()
765 user_string = open_.getStringBuffer(max_user_len)
766 except OpENBufferSizeError:
767 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
770 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
772 user_buff = OpEN.open_buffdesc()
773 user_buff.pstart = user_string
774 user_buff.size = max_user_len
777 group_string = open_.getStringBuffer(max_user_len)
778 except OpENBufferSizeError:
779 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
782 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
784 group_buff = OpEN.open_buffdesc()
785 group_buff.pstart = group_string
786 group_buff.size = max_user_len
789 engine_id_string = open_.getStringBuffer(max_engine_id_len)
790 except OpENBufferSizeError:
791 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
794 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
796 engine_id_buff = OpEN.open_buffdesc()
797 engine_id_buff.pstart = engine_id_string
798 engine_id_buff.size = max_engine_id_len
801 next_user_string = open_.getStringBuffer(max_user_len)
802 except OpENBufferSizeError:
803 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
806 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
808 next_user_buff = OpEN.open_buffdesc()
809 next_user_buff.pstart = next_user_string
810 next_user_buff.size = max_user_len
813 next_engine_id_string = open_.getStringBuffer(max_engine_id_len)
814 except OpENBufferSizeError:
815 print(
"test_snmp_user_get: getStringBuffer raised OpENBufferSizeError")
818 print(
"test_snmp_user_get: getStringBuffer raised TypeError")
820 next_engine_id_buff = OpEN.open_buffdesc()
821 next_engine_id_buff.pstart = next_engine_id_string
822 next_engine_id_buff.size = max_engine_id_len
824 while OpEN.openapiSnmpUserGetNext(self.m_client,
831 next_engine_id_buff) == OpEN.OPEN_E_NONE:
833 if user_name == next_user_string.cast():
837 user_buff.pstart = next_user_buff.pstart
838 user_buff.size = next_user_buff.size
839 engine_id_buff.pstart = next_engine_id_buff.pstart
840 engine_id_buff.size = next_engine_id_buff.size
841 next_user_buff.size = max_user_len
842 next_engine_id_buff.size = max_engine_id_len
844 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpUserGetNext', user_name)
846 if found
and verbose:
847 print(
" User name : ", next_user_string.cast())
848 print(
" Group name : ", group_string.cast())
849 print(
" Authentication : ", OpEN.OPEN_USM_USER_AUTH_PROTOCOL_tp_value(auth_p))
850 print(
" Privilege : ", OpEN.OPEN_USM_USER_PRIV_PROTOCOL_tp_value(priv_p))
853 if version_info >= (3,0,0):
854 for idx
in range(0, next_engine_id_buff.size):
855 engine_id += next_engine_id_string[idx].encode(
'hex')
857 for idx
in xrange(0, next_engine_id_buff.size):
858 engine_id += next_engine_id_string[idx].encode(
'hex')
859 print(
" Engine Id : ", engine_id)
861 OpEN.delete_OPEN_USM_USER_AUTH_PROTOCOL_tp(auth_p)
862 OpEN.delete_OPEN_USM_USER_PRIV_PROTOCOL_tp(priv_p)
864 def test_snmp_group_get(self, group_name, security_model, security_level, context_name) :
865 """Get the specified SNMP group"""
869 max_context_len = 30+1
872 model_p = OpEN.new_OPEN_SNMP_SECURITY_MODEL_tp()
873 level_p = OpEN.new_OPEN_SNMP_SECURITY_LEVEL_tp()
876 group_string = open_.getStringBuffer(max_user_len)
877 except OpENBufferSizeError:
878 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
881 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
883 group_buff = OpEN.open_buffdesc()
884 group_buff.pstart = group_string
885 group_buff.size = max_user_len
888 read_string = open_.getStringBuffer(max_view_len)
889 except OpENBufferSizeError:
890 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
893 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
895 read_buff = OpEN.open_buffdesc()
896 read_buff.pstart = read_string
897 read_buff.size = max_view_len
900 write_string = open_.getStringBuffer(max_view_len)
901 except OpENBufferSizeError:
902 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
905 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
907 write_buff = OpEN.open_buffdesc()
908 write_buff.pstart = write_string
909 write_buff.size = max_view_len
912 notify_string = open_.getStringBuffer(max_view_len)
913 except OpENBufferSizeError:
914 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
917 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
919 notify_buff = OpEN.open_buffdesc()
920 notify_buff.pstart = notify_string
921 notify_buff.size = max_view_len
924 context_string = open_.getStringBuffer(max_user_len)
925 except OpENBufferSizeError:
926 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
929 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
931 context_buff = OpEN.open_buffdesc()
932 context_buff.pstart = context_string
933 context_buff.size = max_context_len
936 next_group_string = open_.getStringBuffer(max_user_len)
937 except OpENBufferSizeError:
938 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
941 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
943 next_group_buff = OpEN.open_buffdesc()
944 next_group_buff.pstart = next_group_string
945 next_group_buff.size = max_user_len
948 next_context_string = open_.getStringBuffer(max_user_len)
949 except OpENBufferSizeError:
950 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
953 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
955 next_context_buff = OpEN.open_buffdesc()
956 next_context_buff.pstart = next_context_string
957 next_context_buff.size = max_user_len
959 while OpEN.openapiSnmpGroupGetNext(self.m_client,
968 next_context_buff) == OpEN.OPEN_E_NONE:
970 if (group_name == next_group_string.cast()
and
971 context_name == next_context_string.cast()):
976 read_string = open_.getStringBuffer(max_view_len)
977 except OpENBufferSizeError:
978 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
981 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
983 read_buff.pstart = read_string
984 read_buff.size = max_view_len
986 write_string = open_.getStringBuffer(max_view_len)
987 except OpENBufferSizeError:
988 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
991 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
993 write_buff.pstart = write_string
994 write_buff.size = max_view_len
996 notify_string = open_.getStringBuffer(max_view_len)
997 except OpENBufferSizeError:
998 print(
"test_snmp_group_get: getStringBuffer raised OpENBufferSizeError")
1001 print(
"test_snmp_group_get: getStringBuffer raised TypeError")
1003 notify_buff.pstart = notify_string
1004 notify_buff.size = max_view_len
1006 group_buff.pstart = next_group_buff.pstart
1007 group_buff.size = next_group_buff.size
1008 context_buff.pstart = next_context_buff.pstart
1009 context_buff.size = next_context_buff.size
1010 next_group_buff.size = max_user_len
1011 next_context_buff.size = max_context_len
1013 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpGroupGetNext', group_name)
1015 if found
and verbose:
1016 print(
" Group name : ", next_group_string.cast())
1017 print(
" Security model : ", OpEN.OPEN_SNMP_SECURITY_MODEL_tp_value(model_p))
1018 print(
" Security level : ", OpEN.OPEN_SNMP_SECURITY_LEVEL_tp_value(level_p))
1019 print(
" Context name : ", next_context_string.cast())
1020 print(
" Read view : ", read_string.cast())
1021 print(
" Write view : ", write_string.cast())
1022 print(
" Notify view : ", notify_string.cast())
1024 OpEN.delete_OPEN_SNMP_SECURITY_MODEL_tp(model_p)
1025 OpEN.delete_OPEN_SNMP_SECURITY_LEVEL_tp(level_p)
1027 def test_snmp_view_get(self, view_name, oid_tree) :
1028 """Get the specified SNMP view name
1030 Iterate through the existing SNMP views until a match for view and oid is found.
1031 If found, display the associated view parameters."""
1037 view_p = OpEN.new_OPEN_SNMP_VIEW_TYPE_tp()
1040 view_string = open_.getStringBuffer(len(view_name) + 1,view_name)
1041 except OpENBufferSizeError:
1042 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1045 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1047 view_buff = OpEN.open_buffdesc()
1048 view_buff.pstart = view_string
1049 view_buff.size = len(view_name) + 1
1052 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1053 except OpENBufferSizeError:
1054 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1057 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1059 oid_buff = OpEN.open_buffdesc()
1060 oid_buff.pstart = oid_string
1061 oid_buff.size = len(oid_tree) + 1
1064 next_view_string = open_.getStringBuffer(max_view_len)
1065 except OpENBufferSizeError:
1066 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1069 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1071 next_view_buff = OpEN.open_buffdesc()
1072 next_view_buff.pstart = next_view_string
1073 next_view_buff.size = max_view_len
1076 next_oid_string = open_.getStringBuffer(max_oid_len)
1077 except OpENBufferSizeError:
1078 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1081 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1083 next_oid_buff = OpEN.open_buffdesc()
1084 next_oid_buff.pstart = next_oid_string
1085 next_oid_buff.size = max_oid_len
1088 oid_string_string = open_.getStringBuffer(max_oid_len)
1089 except OpENBufferSizeError:
1090 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1093 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1095 oid_string_buff = OpEN.open_buffdesc()
1096 oid_string_buff.pstart = oid_string_string
1097 oid_string_buff.size = max_oid_len
1100 oid_val_string = open_.getStringBuffer(max_oid_len)
1101 except OpENBufferSizeError:
1102 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1105 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1107 oid_val_buff = OpEN.open_buffdesc()
1108 oid_val_buff.pstart = oid_val_string
1109 oid_val_buff.size = max_oid_len
1111 OpEN.openapiSnmpTreeFamilyOidStringGet(self.m_client, view_buff, oid_buff, OpEN.OPEN_SNMP_VIEW_TREE, oid_string_buff)
1112 OpEN.openapiSnmpTreeFamilyOidValGet(self.m_client, view_buff, oid_buff, OpEN.OPEN_SNMP_VIEW_TREE, oid_val_buff)
1115 view_string = open_.getStringBuffer(max_view_len)
1116 except OpENBufferSizeError:
1117 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1120 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1122 view_buff = OpEN.open_buffdesc()
1123 view_buff.pstart = view_string
1124 view_buff.size = max_view_len
1127 oid_string = open_.getStringBuffer(max_oid_len)
1128 except OpENBufferSizeError:
1129 print(
"test_snmp_view_get: getStringBuffer raised OpENBufferSizeError")
1132 print(
"test_snmp_view_get: getStringBuffer raised TypeError")
1134 oid_buff = OpEN.open_buffdesc()
1135 oid_buff.pstart = oid_string
1136 oid_buff.size = max_oid_len
1138 while OpEN.openapiSnmpViewGetNext(self.m_client,
1143 next_oid_buff) == OpEN.OPEN_E_NONE:
1145 if (view_name == next_view_string.cast()
and
1146 oid_val_string.cast() == next_oid_string.cast()):
1150 view_buff.pstart = next_view_buff.pstart
1151 view_buff.size = next_view_buff.size
1152 oid_buff.pstart = next_oid_buff.pstart
1153 oid_buff.size = next_oid_buff.size
1154 next_view_buff.size = max_view_len
1155 next_oid_buff.size = max_oid_len
1157 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpViewGetNext', view_name)
1159 if found
and verbose:
1160 print(
" View name : ", next_view_string.cast())
1161 print(
" OID Tree : ", next_oid_string.cast())
1162 print(
" OID String : ", oid_string_string.cast())
1163 print(
" View Type : ", OpEN.OPEN_SNMP_VIEW_TYPE_tp_value(view_p))
1165 OpEN.delete_OPEN_SNMP_VIEW_TYPE_tp(view_p)
1167 def test_snmp_filter_get(self, filter_name, oid_tree) :
1168 """Get the specified SNMP filter name
1170 Iterate through the existing SNMP views until a match for view and oid is found.
1171 If found, display the associated view parameters."""
1175 max_filter_len = 30+1
1177 filter_p = OpEN.new_OPEN_SNMP_NOTIFY_FILTER_TYPE_tp()
1180 filter_string = open_.getStringBuffer(len(filter_name) + 1,filter_name)
1181 except OpENBufferSizeError:
1182 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1185 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1187 filter_buff = OpEN.open_buffdesc()
1188 filter_buff.pstart = filter_string
1189 filter_buff.size = len(filter_name) + 1
1192 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1193 except OpENBufferSizeError:
1194 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1197 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1199 oid_buff = OpEN.open_buffdesc()
1200 oid_buff.pstart = oid_string
1201 oid_buff.size = len(oid_tree)
1204 next_filter_string = open_.getStringBuffer(max_filter_len)
1205 except OpENBufferSizeError:
1206 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1209 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1211 next_filter_buff = OpEN.open_buffdesc()
1212 next_filter_buff.pstart = next_filter_string
1213 next_filter_buff.size = max_filter_len
1216 next_oid_string = open_.getStringBuffer(max_oid_len)
1217 except OpENBufferSizeError:
1218 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1221 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1223 next_oid_buff = OpEN.open_buffdesc()
1224 next_oid_buff.pstart = next_oid_string
1225 next_oid_buff.size = max_oid_len
1228 oid_string_string = open_.getStringBuffer(max_oid_len)
1229 except OpENBufferSizeError:
1230 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1233 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1235 oid_string_buff = OpEN.open_buffdesc()
1236 oid_string_buff.pstart = oid_string_string
1237 oid_string_buff.size = max_oid_len
1240 oid_val_string = open_.getStringBuffer(max_oid_len)
1241 except OpENBufferSizeError:
1242 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1245 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1247 oid_val_buff = OpEN.open_buffdesc()
1248 oid_val_buff.pstart = oid_val_string
1249 oid_val_buff.size = max_oid_len
1251 OpEN.openapiSnmpTreeFamilyOidStringGet(self.m_client, filter_buff, oid_buff, OpEN.OPEN_SNMP_FILTER_TREE, oid_string_buff)
1252 OpEN.openapiSnmpTreeFamilyOidValGet(self.m_client, filter_buff, oid_buff, OpEN.OPEN_SNMP_FILTER_TREE, oid_val_buff)
1255 filter_string = open_.getStringBuffer(max_filter_len)
1256 except OpENBufferSizeError:
1257 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1260 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1262 filter_buff = OpEN.open_buffdesc()
1263 filter_buff.pstart = filter_string
1264 filter_buff.size = max_filter_len
1267 oid_string = open_.getStringBuffer(max_oid_len)
1268 except OpENBufferSizeError:
1269 print(
"test_snmp_filter_get: getStringBuffer raised OpENBufferSizeError")
1272 print(
"test_snmp_filter_get: getStringBuffer raised TypeError")
1274 oid_buff = OpEN.open_buffdesc()
1275 oid_buff.pstart = oid_string
1276 oid_buff.size = max_oid_len
1278 while OpEN.openapiSnmpFilterGetNext(self.m_client,
1283 next_oid_buff) == OpEN.OPEN_E_NONE:
1285 if (filter_name == next_filter_string.cast()
and
1286 oid_val_string.cast() == next_oid_string.cast()):
1290 filter_buff.pstart = next_filter_buff.pstart
1291 filter_buff.size = next_filter_buff.size
1292 oid_buff.pstart = next_oid_buff.pstart
1293 oid_buff.size = next_oid_buff.size
1294 next_filter_buff.size = max_filter_len
1295 next_oid_buff.size = max_oid_len
1297 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpFilterGetNext', filter_name)
1299 if found
and verbose:
1300 print(
" Filter name : ", next_filter_string.cast())
1301 print(
" OID Tree : ", next_oid_string.cast())
1302 print(
" OID String : ", oid_string_string.cast())
1303 print(
" View Type : ", OpEN.OPEN_SNMP_NOTIFY_FILTER_TYPE_tp_value(filter_p))
1305 OpEN.delete_OPEN_SNMP_NOTIFY_FILTER_TYPE_tp(filter_p)
1307 def test_snmp_host_get(self, host) :
1308 """Get the specified SNMP host name
1310 Iterate through the existing SNMP hosts until a match for
1311 host is found. If found, display the associated host parameters."""
1314 max_host_len = 158+1
1315 max_filter_len = 30+1
1316 max_security_len = 30+1
1318 port_p = OpEN.new_uint32_tp()
1319 model_p = OpEN.new_OPEN_SNMP_SECURITY_MODEL_tp()
1320 level_p = OpEN.new_OPEN_SNMP_SECURITY_LEVEL_tp()
1321 type_p = OpEN.new_OPEN_SNMP_NOTIFY_TYPE_tp()
1322 timeout_p = OpEN.new_uint32_tp()
1323 retries_p = OpEN.new_uint32_tp()
1326 host_string = open_.getStringBuffer(max_host_len)
1327 except OpENBufferSizeError:
1328 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1331 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1333 host_buff = OpEN.open_buffdesc()
1334 host_buff.pstart = host_string
1335 host_buff.size = max_host_len
1338 security_string = open_.getStringBuffer(max_security_len)
1339 except OpENBufferSizeError:
1340 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1343 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1345 security_buff = OpEN.open_buffdesc()
1346 security_buff.pstart = security_string
1347 security_buff.size = max_security_len
1350 filter_string = open_.getStringBuffer(max_filter_len)
1351 except OpENBufferSizeError:
1352 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1355 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1357 filter_buff = OpEN.open_buffdesc()
1358 filter_buff.pstart = filter_string
1359 filter_buff.size = max_filter_len
1362 next_host_string = open_.getStringBuffer(max_host_len)
1363 except OpENBufferSizeError:
1364 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1367 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1369 next_host_buff = OpEN.open_buffdesc()
1370 next_host_buff.pstart = next_host_string
1371 next_host_buff.size = max_host_len
1373 while OpEN.openapiSnmpHostGetNext(self.m_client,
1383 next_host_buff) == OpEN.OPEN_E_NONE:
1385 if host == next_host_string.cast():
1390 security_string = open_.getStringBuffer(max_security_len)
1391 except OpENBufferSizeError:
1392 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1395 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1397 security_buff = OpEN.open_buffdesc()
1398 security_buff.pstart = security_string
1399 security_buff.size = max_security_len
1402 filter_string = open_.getStringBuffer(max_filter_len)
1403 except OpENBufferSizeError:
1404 print(
"test_snmp_host_get: getStringBuffer raised OpENBufferSizeError")
1407 print(
"test_snmp_host_get: getStringBuffer raised TypeError")
1409 filter_buff = OpEN.open_buffdesc()
1410 filter_buff.pstart = filter_string
1411 filter_buff.size = max_filter_len
1413 host_buff.pstart = next_host_buff.pstart
1414 host_buff.size = next_host_buff.size
1415 next_host_buff.size = max_host_len
1417 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpHostGetNext', host)
1419 if found
and verbose:
1420 print(
" Address port : %s %d" % (next_host_string.cast(), OpEN.uint32_tp_value(port_p)))
1421 print(
" Security name : ", security_string.cast())
1422 print(
" Security model : ", OpEN.OPEN_SNMP_SECURITY_MODEL_tp_value(model_p))
1423 print(
" Security level : ", OpEN.OPEN_SNMP_SECURITY_LEVEL_tp_value(level_p))
1424 print(
" Notify type : ", OpEN.OPEN_SNMP_NOTIFY_TYPE_tp_value(type_p))
1425 print(
" Timeout : ", OpEN.uint32_tp_value(timeout_p))
1426 print(
" Retries : ", OpEN.uint32_tp_value(retries_p))
1427 print(
" Filter name : ", filter_string.cast())
1429 OpEN.delete_uint32_tp(port_p)
1430 OpEN.delete_OPEN_SNMP_SECURITY_MODEL_tp(model_p)
1431 OpEN.delete_OPEN_SNMP_SECURITY_LEVEL_tp(level_p)
1432 OpEN.delete_OPEN_SNMP_NOTIFY_TYPE_tp(type_p)
1433 OpEN.delete_uint32_tp(timeout_p)
1434 OpEN.delete_uint32_tp(retries_p)
1436 def test_snmp_community_get(self, community_name) :
1437 """Get the specified SNMP community name
1439 Iterate through the existing SNMP hosts until a match for
1440 host is found. If found, display the associated host parameters."""
1442 max_community_len = 20+1
1444 access_p = OpEN.new_OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp()
1445 addr = OpEN.open_inet_addr_t()
1448 community_string = open_.getStringBuffer(max_community_len)
1449 except OpENBufferSizeError:
1450 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1453 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1455 community_buff = OpEN.open_buffdesc()
1456 community_buff.pstart = community_string
1457 community_buff.size = max_community_len
1460 view_string = open_.getStringBuffer(max_view_len)
1461 except OpENBufferSizeError:
1462 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1465 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1467 view_buff = OpEN.open_buffdesc()
1468 view_buff.pstart = view_string
1469 view_buff.size = max_view_len
1472 next_community_string = open_.getStringBuffer(max_community_len)
1473 except OpENBufferSizeError:
1474 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1477 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1479 next_community_buff = OpEN.open_buffdesc()
1480 next_community_buff.pstart = next_community_string
1481 next_community_buff.size = max_community_len
1483 while OpEN.openapiSnmpCommunityGetNext(self.m_client,
1488 next_community_buff) == OpEN.OPEN_E_NONE:
1490 if community_name == next_community_string.cast():
1495 view_string = open_.getStringBuffer(max_view_len)
1496 except OpENBufferSizeError:
1497 print(
"test_snmp_community_get: getStringBuffer raised OpENBufferSizeError")
1500 print(
"test_snmp_community_get: getStringBuffer raised TypeError")
1502 view_buff = OpEN.open_buffdesc()
1503 view_buff.pstart = view_string
1504 view_buff.size = max_view_len
1506 community_buff.pstart = next_community_buff.pstart
1507 community_buff.size = next_community_buff.size
1508 next_community_buff.size = max_community_len
1510 print_sanity_results(OpEN.OPEN_E_NONE, found,
'openapiSnmpCommunityGetNext', community_name)
1512 if found
and verbose:
1513 print(
" Community :", next_community_string.cast())
1514 print(
" Access Type :", OpEN.OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp_value(access_p))
1515 print(
" View Name :", view_string.cast())
1516 print(
" IP Address :", int_to_ip(addr.addr.ipv4))
1518 OpEN.delete_OPEN_SNMP_COMMUNITY_ACCESS_TYPE_tp(access_p)
1520 def test_snmp_trap_flag_get(self, flag_bits, mode) :
1521 """Retrieve the trap mode for a single trap."""
1523 mode_p = OpEN.new_bool_tp()
1525 result = OpEN.openapiSnmpTrapFlagGet(self.m_client, flag_bits, mode_p)
1526 print_bad_result(result,
'openapiSnmpTrapFlagGet')
1527 print_sanity_results(result, mode == OpEN.bool_tp_value(mode_p),
'openapiSnmpTrapFlagGet', str(flag_bits))
1528 OpEN.delete_bool_tp(mode_p)
1530 def test_snmp_local_engine_id_delete(self) :
1531 """Delete the SNMP engine id on the local device.
1533 The engine id is actually reset to the default id which is
1534 automatically generated based on the local MAC address."""
1536 result = OpEN.openapiSnmpLocalEngineIdDelete(self.m_client)
1537 print_bad_result(result,
'openapiSnmpLocalEngineIdDelete')
1538 print_sanity_results(OpEN.OPEN_E_NONE,
True,
'openapiSnmpLocalEngineIdDelete',
'')
1540 def test_snmp_view_delete(self, view_name, oid_tree) :
1541 """Delete an existing SNMP view."""
1544 view_string = open_.getStringBuffer(len(view_name) + 1,view_name)
1545 except OpENBufferSizeError:
1546 print(
"test_snmp_view_delete: getStringBuffer raised OpENBufferSizeError")
1549 print(
"test_snmp_view_delete: getStringBuffer raised TypeError")
1551 view_buff = OpEN.open_buffdesc()
1552 view_buff.pstart = view_string
1553 view_buff.size = len(view_name) + 1
1556 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1557 except OpENBufferSizeError:
1558 print(
"test_snmp_view_delete: getStringBuffer raised OpENBufferSizeError")
1561 print(
"test_snmp_view_delete: getStringBuffer raised TypeError")
1563 oid_buff = OpEN.open_buffdesc()
1564 oid_buff.pstart = oid_string
1565 oid_buff.size = len(oid_tree)
1567 result = OpEN.openapiSnmpViewDelete(self.m_client, view_buff, oid_buff)
1568 print_bad_result(result,
'openapiSnmpViewDelete')
1569 print_sanity_results(result,
True,
'openapiSnmpViewDelete', view_name)
1571 def test_snmp_filter_delete(self, filter_name, oid_tree) :
1572 """Delete an existing SNMP filter."""
1574 filter_string = open_.getStringBuffer(len(filter_name) + 1,filter_name)
1575 filter_buff = OpEN.open_buffdesc()
1576 filter_buff.pstart = filter_string
1577 filter_buff.size = len(filter_name) + 1
1580 oid_string = open_.getStringBuffer(len(oid_tree) + 1,oid_tree)
1581 except OpENBufferSizeError:
1582 print(
"test_snmp_filter_delete: getStringBuffer raised OpENBufferSizeError")
1585 print(
"test_snmp_filter_delete: getStringBuffer raised TypeError")
1587 oid_buff = OpEN.open_buffdesc()
1588 oid_buff.pstart = oid_string
1589 oid_buff.size = len(oid_tree) + 1
1591 result = OpEN.openapiSnmpFilterDelete(self.m_client, filter_buff, oid_buff)
1592 print_bad_result(result,
'openapiSnmpFilterDelete')
1593 print_sanity_results(result,
True,
'openapiSnmpFilterDelete', filter_name)
1595 def test_snmp_host_delete(self, host, notify_type) :
1596 """Delete an existing SNMP host."""
1599 host_string = open_.getStringBuffer(len(host) + 1, host)
1600 except OpENBufferSizeError:
1601 print(
"test_snmp_host_delete: getStringBuffer raised OpENBufferSizeError")
1604 print(
"test_snmp_host_delete: getStringBuffer raised TypeError")
1606 host_buff = OpEN.open_buffdesc()
1607 host_buff.pstart = host_string
1608 host_buff.size = len(host) + 1
1610 result = OpEN.openapiSnmpHostDelete(self.m_client, host_buff, notify_type)
1611 print_bad_result(result,
'openapiSnmpHostDelete')
1612 print_sanity_results(result,
True,
'openapiSnmpHostDelete', host)
1614 def test_snmp_user_delete(self, user_name, engine_id) :
1615 """Delete a SNMP user."""
1618 user_string = open_.getStringBuffer(len(user_name) + 1, user_name)
1619 except OpENBufferSizeError:
1620 print(
"test_snmp_user_delete: getStringBuffer raised OpENBufferSizeError")
1623 print(
"test_snmp_user_delete: getStringBuffer raised TypeError")
1625 user_buff = OpEN.open_buffdesc()
1626 user_buff.pstart = user_string
1627 user_buff.size = len(user_name) + 1
1630 engine_id_string = open_.getStringBuffer(len(engine_id) + 1, engine_id)
1631 except OpENBufferSizeError:
1632 print(
"test_snmp_user_delete: getStringBuffer raised OpENBufferSizeError")
1635 print(
"test_snmp_user_delete: getStringBuffer raised TypeError")
1637 engine_id_buff = OpEN.open_buffdesc()
1638 engine_id_buff.pstart = engine_id_string
1639 engine_id_buff.size = len(engine_id) + 1
1641 result = OpEN.openapiSnmpUserDelete(self.m_client, user_buff, engine_id_buff)
1642 print_bad_result(result,
'openapiSnmpUserDelete')
1643 print_sanity_results(result,
True,
'openapiSnmpUserDelete', user_name)
1645 def test_snmp_group_delete(self, group_name, model, level, context_name) :
1646 """Delete a SNMP group."""
1649 group_string = open_.getStringBuffer(len(group_name) + 1, group_name)
1650 except OpENBufferSizeError:
1651 print(
"test_snmp_group_delete: getStringBuffer raised OpENBufferSizeError")
1654 print(
"test_snmp_group_delete: getStringBuffer raised TypeError")
1656 group_buff = OpEN.open_buffdesc()
1657 group_buff.pstart = group_string
1658 group_buff.size = len(group_name) + 1
1661 context_string = open_.getStringBuffer(len(context_name) + 1, context_name)
1662 except OpENBufferSizeError:
1663 print(
"test_snmp_group_delete: getStringBuffer raised OpENBufferSizeError")
1666 print(
"test_snmp_group_delete: getStringBuffer raised TypeError")
1668 context_buff = OpEN.open_buffdesc()
1669 context_buff.pstart = context_string
1670 context_buff.size = len(context_name) + 1
1672 result = OpEN.openapiSnmpGroupDelete(self.m_client, group_buff, model, level, context_buff)
1673 print_bad_result(result,
'openapiSnmpGroupDelete')
1674 print_sanity_results(result,
True,
'openapiSnmpGroupDelete', group_name)
1676 def test_snmp_community_delete(self, community_name) :
1677 """Delete an SNMP community."""
1680 community_string = open_.getStringBuffer(len(community_name) + 1, community_name)
1681 except OpENBufferSizeError:
1682 print(
"test_snmp_community_delete: getStringBuffer raised OpENBufferSizeError")
1685 print(
"test_snmp_community_delete: getStringBuffer raised TypeError")
1687 community_buff = OpEN.open_buffdesc()
1688 community_buff.pstart = community_string
1689 community_buff.size = len(community_name) + 1
1691 result = OpEN.openapiSnmpCommunityDelete(self.m_client, community_buff)
1692 print_bad_result(result,
'openapiSnmpCommunityDelete')
1693 print_sanity_results(result,
True,
'openapiSnmpCommunityDelete', community_name)
1695 def test_snmp_trap_source_interface(self, interface_type) :
1696 """Set, then get the source interface which SNMP trap originates.
1698 For demonstration purposes, this function retrieves the first
1699 interface based on interface type and attempts to set it as the
1700 source interface. If successful, the interface attributes are
1701 retrieved and verified. """
1703 val_p = OpEN.new_uint32_tp()
1704 intf_p = OpEN.new_uint32_tp()
1705 type_p = OpEN.new_OPEN_INTF_TYPE_tp()
1706 state_p = OpEN.new_OPEN_LINK_STATE_tp()
1708 msg =
'interface type : ' + get_type(interface_type)
1711 result = OpEN.openapiIfFirstGet(self.m_client, interface_type, val_p)
1712 if result == OpEN.OPEN_E_FAIL:
1713 result = OpEN.OPEN_E_NOT_FOUND
1714 print_bad_result(result,
'%s - %s' % (
'openapiIfFirstGet', msg))
1716 if result == OpEN.OPEN_E_NONE:
1717 intf = OpEN.uint32_tp_value(val_p)
1718 result = OpEN.openapiSnmpTrapSrcIntfSet(self.m_client, intf)
1719 print_bad_result(result,
'%s - %s' % (
'openapiSnmpTrapSrcIntfSet', msg))
1721 if result == OpEN.OPEN_E_NONE:
1722 tmp_addr = OpEN.open_inet_addr_t()
1723 result = OpEN.openapiSnmpTrapSrcIntfGet(self.m_client, intf_p, type_p, tmp_addr)
1724 print_bad_result(result,
'%s - %s' % (
'openapiSnmpTrapSrcIntfGet', msg))
1726 if result == OpEN.OPEN_E_NONE:
1727 if tmp_addr.family == OpEN.OPEN_AF_INET
or tmp_addr.family == OpEN.OPEN_AF_UNIX:
1728 ip_addr = int_to_ip(tmp_addr.addr.ipv4)
1730 result = OpEN.OPEN_E_PARAM
1731 print_bad_result(result,
'%s - %s' % (
'inet_ntoa', msg))
1733 if result == OpEN.OPEN_E_NONE:
1734 result = OpEN.openapiIfLinkStateGet(self.m_client, intf, state_p)
1735 print_bad_result(result,
'%s - %s' % (
'openapiIfLinkStateGet', msg))
1737 if result == OpEN.OPEN_E_NONE:
1738 print_sanity_results(result,
True,
'openapiSnmpTrapSrcIntfSet', msg)
1740 print(
" Interface : ", intf)
1741 print(
" Type : ", get_type(interface_type))
1742 print(
" Address : ", ip_addr)
1743 print(
" State : ", get_link(OpEN.OPEN_LINK_STATE_tp_value(state_p)))
1745 OpEN.delete_uint32_tp(val_p)
1746 OpEN.delete_uint32_tp(intf_p)
1747 OpEN.delete_OPEN_INTF_TYPE_tp(type_p)
1748 OpEN.delete_OPEN_LINK_STATE_tp(state_p)
1751 """Demonstrate OpEN usage for SNMP APIs"""
1754 opts, args = getopt.getopt(argv,
"hv")
1755 except getopt.GetoptError:
1756 print(
"snmp_example.py <-v>")
1758 for opt, arg
in opts:
1760 print(
"snmp_example.py <-v>")
1766 ret = open_.connect(
"snmp_example")
1767 if ret == OpEN.OPEN_E_NONE :
1768 open_.getNetworkOSVersion()
1769 client = open_.get_client()
1770 example = SnmpExample(client)
1771 print(
"Begin Sanity tests...")
1772 example.test_snmp_sys_name_set(
'system-name')
1773 example.test_snmp_sys_location_set(
"system-location")
1774 example.test_snmp_sys_contact_set(
"system-contact")
1775 example.test_snmp_local_engine_id_set(
"default")
1776 print(
"\nCreate SNMP users...")
1777 example.test_snmp_user_create(SNMP_USER_LIST)
1778 print(
"\nCreate SNMP groups...")
1779 example.test_snmp_group_create(SNMP_GROUP_LIST)
1780 print(
"\nCreate SNMP views...")
1781 example.test_snmp_view_create(SNMP_VIEW_LIST)
1782 print(
"\nCreate SNMP filters...")
1783 example.test_snmp_filter_create(SNMP_FILTER_LIST)
1784 print(
"\nCreate SNMP hosts...")
1785 example.test_snmp_host_create(SNMP_HOST_LIST)
1786 print(
"\nCreate SNMP communities...")
1787 example.test_snmp_community_create(SNMP_COMMUNITY_LIST)
1788 print(
"\nEnable misc SNMP trap flags...")
1789 example.testSnmpTrapFlagSet([OpEN.OPEN_SNMP_MULTI_USERS_TRAP_FLAG, OpEN.OPEN_SNMP_USER_AUTH_TRAP_FLAG],
True)
1790 print(
"\nRetrieve some SNMP records...")
1791 example.test_snmp_sys_name_get()
1792 example.test_snmp_sys_location_get()
1793 example.test_snmp_sys_contact_get()
1794 example.test_snmp_local_engine_id_get()
1795 example.test_snmp_user_get(
'admin1')
1796 example.test_snmp_group_get(
'network-admin', OpEN.OPEN_SNMP_SECURITY_MODEL_USM, OpEN.OPEN_SNMP_SECURITY_LEVEL_AUTHPRIV,
'context-1')
1797 example.test_snmp_view_get(
'view-1',
'broadcom')
1798 example.test_snmp_view_get(
'view-2',
'ifEntry.*.1')
1799 example.test_snmp_filter_get(
'filter-1',
'broadcom')
1800 example.test_snmp_filter_get(
'filter-2',
'ifEntry.*.1')
1801 example.test_snmp_host_get(
'2001::')
1802 example.test_snmp_community_get(
'public-test')
1803 example.test_snmp_community_get(
'private-test')
1804 example.test_snmp_community_get(
'delete-private-map')
1805 example.test_snmp_trap_flag_get(OpEN.OPEN_SNMP_MULTI_USERS_TRAP_FLAG,
True)
1806 example.test_snmp_trap_flag_get(OpEN.OPEN_SNMP_USER_AUTH_TRAP_FLAG,
True)
1807 print(
"\nDelete some SNMP records...")
1808 example.test_snmp_local_engine_id_delete()
1809 example.test_snmp_view_delete(
"view-2",
"ifEntry.*.1")
1810 example.test_snmp_filter_delete(
"filter-2",
"ifEntry.*.1")
1811 example.test_snmp_host_delete(
"10.10.10.2", OpEN.OPEN_SNMP_NOTIFY_TYPE_TRAP)
1812 example.test_snmp_user_delete(
"delete-user",
"dddddddddddddddddddddddddddddddd")
1813 example.test_snmp_group_delete(
"delete-group", OpEN.OPEN_SNMP_SECURITY_MODEL_SNMPV2C, OpEN.OPEN_SNMP_SECURITY_LEVEL_NOAUTHNOPRIV,
"context-3")
1814 example.test_snmp_community_delete(
"delete-community")
1815 example.test_snmp_community_delete(
"delete-private-map")
1816 print(
"\nAttempt to set the trap source-interface...")
1818 example.test_snmp_trap_source_interface(OpEN.OPEN_INTF_TYPE_PHY)
1822 print(
"Unable to connect")
1824 if __name__ ==
'__main__':