Python pysnmpの使用方法とコードの例
SNMP標準はASN.1の言語要素のセットを導入し、SMI(Structure of Management Information)と呼ぶ。SMIによって記述された相互関連する被管理対象(Managed Objects)はMIB(Management Information Base)モジュールを構成する。
コアMIBでよく使われるManaged ObjectはSNMP標準の一部となっています。残りのMIBは一般的に設備メーカーによってその設備の中で作成される(つまり、これらのMIBは生産者と設備に関するものです。
PySNMPは純粋にPythonで実現したSNMPです。
PySNMPを使った最も抽象的なAPIはOneline Aplicationsである。二つの種類のAPIがあります。同期および非同期は、モジュールpysnmp.entity.rfc 3413.oneliner.cdgenで実装されます。
ですから、使う時は便利のために、大丈夫です。
1.cmdgen.communnityData()葃菗菗コミュニティ情報は3つのデータに入ってきました。安全md-agent、コミュニティ名public、snmpプロトコルバージョンは、カンマで区切られています。例えばcmdgen.CommunnityData(my-agent'、'public'、1)
2.cmdgen.UdpTransport Target()葓钾チャネルパラメータは、ホストIP/ドメイン名とポートを含み、一つのタプルに入ってきました。例えば、cmdgen.UdpTransportTarget(192.168.70.377',161)
3.OID菗mib値、例えば'.1.3.6.1.4.1800.5.13.2'
注意:三つのパラメータの間は「、」で区切られます。
次の例はデバイスsnmpデータを取得することです。
コアMIBでよく使われるManaged ObjectはSNMP標準の一部となっています。残りのMIBは一般的に設備メーカーによってその設備の中で作成される(つまり、これらのMIBは生産者と設備に関するものです。
PySNMPは純粋にPythonで実現したSNMPです。
PySNMPを使った最も抽象的なAPIはOneline Aplicationsである。二つの種類のAPIがあります。同期および非同期は、モジュールpysnmp.entity.rfc 3413.oneliner.cdgenで実装されます。
ですから、使う時は便利のために、大丈夫です。
from pysnmp.entity.rfc3413.oneliner import cmdgen
cg = cmdgen.CommandGenerator()
CommandGenerator ,
cg getCmd 。
getCmd()は3つのパラメータが必要です。1.cmdgen.communnityData()葃菗菗コミュニティ情報は3つのデータに入ってきました。安全md-agent、コミュニティ名public、snmpプロトコルバージョンは、カンマで区切られています。例えばcmdgen.CommunnityData(my-agent'、'public'、1)
2.cmdgen.UdpTransport Target()葓钾チャネルパラメータは、ホストIP/ドメイン名とポートを含み、一つのタプルに入ってきました。例えば、cmdgen.UdpTransportTarget(192.168.70.377',161)
3.OID菗mib値、例えば'.1.3.6.1.4.1800.5.13.2'
注意:三つのパラメータの間は「、」で区切られます。
次の例はデバイスsnmpデータを取得することです。
from pysnmp.entity.rfc3413.oneliner import cmdgen
def snmpget():
cg = cmdgen.CommandGenerator() ## CommandGenerator
errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd(
#0 v1,1 v2c
cmdgen.CommunityData('my-agent', 'public', 1), ## ,my-agent ,public ,1 snmp v2c ,0 v1
cmdgen.UdpTransportTarget(('192.168.70.237', 161)),## , IP 192.168.70.237, 161 (snmp 161 UDP )
'.1.3.6.1.4.1.1800.5.13.2' ## OID, MIB
)
print str(varBinds[0][1]); ##varBinds stulp, MIB
def runit(loop=1):
for i in range(loop):
snmpget()
#print i
if __name__ == "__main__":
runit(loop=1)
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。