1#!/usr/bin/env python
2#
3# This file is part of pyasn1-modules software.
4#
5# Copyright (c) 2005-2017, Ilya Etingof <etingof@gmail.com>
6# License: http://pyasn1.sf.net/license.html
7#
8# Generate SNMPGET request, parse response
9#
10from pyasn1.codec.ber import encoder, decoder
11from pyasn1_modules import rfc1157
12import sys
13import socket
14
15if len(sys.argv) != 4:
16    print("""Usage:
17$ %s <community> <host> <OID>""" % sys.argv[0])
18    sys.exit(-1)
19
20msg = rfc1157.Message()
21msg.setComponentByPosition(0)
22msg.setComponentByPosition(1, sys.argv[1])
23# pdu
24pdus = msg.setComponentByPosition(2).getComponentByPosition(2)
25pdu = pdus.setComponentByPosition(0).getComponentByPosition(0)
26pdu.setComponentByPosition(0, 123)
27pdu.setComponentByPosition(1, 0)
28pdu.setComponentByPosition(2, 0)
29vbl = pdu.setComponentByPosition(3).getComponentByPosition(3)
30vb = vbl.setComponentByPosition(0).getComponentByPosition(0)
31vb.setComponentByPosition(0, sys.argv[3])
32v = vb.setComponentByPosition(1).getComponentByPosition(1).setComponentByPosition(0).getComponentByPosition(0).setComponentByPosition(3).getComponentByPosition(3)
33
34print('sending: %s' % msg.prettyPrint())
35
36sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
37sock.sendto(encoder.encode(msg), (sys.argv[2], 161))
38
39substrate, _ = sock.recvfrom(2048)
40
41# noinspection PyRedeclaration
42rMsg, _ = decoder.decode(substrate, asn1Spec=msg)
43
44print('received: %s' % rMsg.prettyPrint())
45