如何从fdb表获取值mac和vlan使用python?
在bash snmpwalk工作正常:
snmpwalk -v2c -c pub 192.168.0.100 1.3.6.1.2.1.17.7.1.2.2.1.2
Run Code Online (Sandbox Code Playgroud)
pysnmp:
import os, sys
import socket
import random
from struct import pack, unpack
from datetime import datetime as dt
from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto.rfc1902 import Integer, IpAddress, OctetString
ip='192.168.0.100'
community='pub'
value=(1,3,6,1,2,1,17,7,1,2,2,1,2)
generator = cmdgen.CommandGenerator()
comm_data = cmdgen.CommunityData('server', community, 1) # 1 means version SNMP v2c
transport = cmdgen.UdpTransportTarget((ip, 161))
real_fun = getattr(generator, 'getCmd')
res = (errorIndication, errorStatus, errorIndex, varBinds)\
= real_fun(comm_data, transport, value)
if not errorIndication is None or errorStatus …Run Code Online (Sandbox Code Playgroud) 使用pysnmp框架我得到了一些snmp walk值.不幸的是对于oid
1.3.6.1.21.69.1.5.8.1.2(DOCS-CABLE-DEVICE-MIB)
我得到一个奇怪的结果,我不能正确打印在这里因为它包含ascii字符之类的 BEL ACK
做一个repr我得到:
八位组串( '\ X07\XD8 \吨\ X17\X03\x184\X00')
但输出应如下所示:
2008-9-23,3:24:52.0
格式称为"DateAndTime".如何将OctetString输出转换为"人类可读"的日期/时间?
我已经有了MIB文本文件(我是否需要以某种方式将其转换为.py文件?).我正在尝试使用PySNMP(不是net-snmp).我已经能够连接到我的设备并打印出一些信息,但信息不是很有用(只是ObjectName,ObjectIdentifier等).我希望能够与设备通信(发送命令来更改和读取值),但我看到的所有教程似乎都没什么帮助.有谁知道如何使用我的自定义MIB与我的设备进行有效通信?我遗失的任何好网站?http://pysnmp.sourceforge.net/没关系,但我需要别的......
有一种socket方法可以获取给定网络接口的IP:
import socket
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
>>> get_ip_address('lo')
'127.0.0.1'
>>> get_ip_address('eth0')
'38.113.228.130'
Run Code Online (Sandbox Code Playgroud)
是否有类似的方法来返回该接口的网络传输?我知道我可以阅读,/proc/net/dev但我喜欢套接字方法.
我需要一个 python 中的 SNMP 代理,它侦听特定端口并响应基本的 SNMP 命令(如 GTE、SET、GETNEXT ...等)
如果有人有代码,请在此帖子中回复。
我正在尝试在Windows上使用PySNMP,但是当我尝试导入cmdgen时,我看到以下错误:
from pysnmp.entity.rfc3413.oneliner import cmdgen
ImportError: No module named pyasn1.compat.octets
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个错误,我也没有触及init .py
谢谢
您好,我正在尝试使用 pysnmp doc 中的代码监听陷阱:
from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher
from pysnmp.carrier.asynsock.dgram import udp, udp6
from pyasn1.codec.ber import decoder
from pysnmp.proto import api
def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
print('cbFun is called')
while wholeMsg:
print('loop...')
msgVer = int(api.decodeMessageVersion(wholeMsg))
if msgVer in api.protoModules:
pMod = api.protoModules[msgVer]
else:
print('Unsupported SNMP version %s' % msgVer)
return
reqMsg, wholeMsg = decoder.decode(
wholeMsg, asn1Spec=pMod.Message(),
)
print('Notification message from %s:%s: ' % (
transportDomain, transportAddress
)
)
reqPDU = pMod.apiMessage.getPDU(reqMsg)
if reqPDU.isSameTypeWith(pMod.TrapPDU()):
if msgVer == api.protoVersion1:
print('Enterprise: %s' % …Run Code Online (Sandbox Code Playgroud) 客户要求我们将 SNMP 陷阱发送到他们的 Nagios 服务器,而不是电子邮件警报。昨天之前我对 SNMP 唯一了解的是它听起来像一个缩写词,所以请原谅(并纠正我)我对它可能有的任何误解。
陷阱中需要发送的唯一信息与我们向客户端发出警报的事件的数据有关,这只是从我们的数据库中提取的几个值。不用说,这些不在任何类型的 MIB 中,也没有任何 OID,这就是我无法找到答案的地方。
我无法弄清楚如何在不使用 MIB OID(我没有)的情况下将特定数据添加到陷阱中。
我正在使用 PySNMP 生成请求,但现在只有不完整的代码,因为我不确定如何将我们的数据合并到数据包中。
from pysnmp.hlapi import *
def sendSNMP(destination, community_string, data):
community = CommunityData(community_string, mpModel = 0)
target = UdpTransportTarget((destination, 162))
notification_type = None
req = sendNotification(SnmpEngine(), community, target, ContextData(), 'trap', notification_type)
errorIndication, errorStatus, errorIndex, varBinds = next(req)
Run Code Online (Sandbox Code Playgroud)
任何帮助表示感谢!谢谢。
我正在尝试编写一个python SNMP代理,我可以将其嵌入到我的python应用程序中,以便OpenNMS可以远程监视应用程序.OpenNMS希望代理实现HOST-RESOURCES-MIB查询两个字段 hrSWRunName和hrSWRunStatus.
我把一个pysnmp示例作为我的代码的基础,并在我认为必要时编辑它.生成的代码如下所示:
import logging
from pysnmp import debug
from pysnmp.carrier.asyncore.dgram import udp
from pysnmp.entity import engine, config
from pysnmp.entity.rfc3413 import cmdrsp, context
from pysnmp.proto.api import v2c
from pysnmp.smi import builder, instrum, exval
# debug.setLogger(debug.Debug('all'))
formatting = '[%(asctime)s-%(levelname)s]-(%(module)s) %(message)s'
logging.basicConfig(level=logging.DEBUG, format=formatting, )
logging.info("Starting....")
# Create SNMP engine
snmpEngine = engine.SnmpEngine()
# Transport setup
# UDP over IPv4
config.addTransport(
snmpEngine,
udp.domainName,
udp.UdpTransport().openServerMode(('localhost', 12345))
)
# SNMPv2c setup
# SecurityName <-> CommunityName mapping.
config.addV1System(snmpEngine, 'my-area', 'public') …Run Code Online (Sandbox Code Playgroud) 我试图使用pip在python 3.6.0上安装pysnmp(使用pycrypto),但是我遇到了一个错误:
命令""c:\ program files(x86)\ python36-32\python.exe"-u -c"import setuptools,tokenize; file ='C:\ Users\HOME-M~1\AppData\Local\Temp\pip-build-6l69kxa5\pycrypto\setup.py'; f = getattr(tokenize,'op en',open)(file); code = f.read().replace('\ r \n','\n'); f.close(); exec(compile(code,file,'exec'))"install --record C:\用户\ HOME-M~1\AppData\Local\Temp\pip-qq93gmf_-record\install-record.txt --single- version-external-managed --compile"在C:\ Users\HOME中失败并显示错误代码1 -M~1\AppData\Local\Temp\p ip-build-6l69kxa5\pycrypto \
我不是高级用户,我无法为这个问题找到解决方案.如果您知道如何解决它,请告诉我.Python 3.5.2很容易安装.
pysnmp ×10
python ×8
snmp ×7
mib ×3
decode ×1
fdb ×1
linux ×1
net-snmp ×1
networking ×1
opennms ×1
pycrypto ×1
python-2.7 ×1
python-3.6 ×1
twisted ×1