pysnmp中的ipv6支持

2024-09-28 21:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码:

import pysnmp
from pysnmp.entity.rfc3413.oneliner import cmdgen


errorIndication, errorStatus, errorIndex, \
           varBindTable = cmdGen.nextCmd (
                          cmdgen.CommunityData(agent, community_string),
                          cmdgen.UdpTransportTarget ( (ip, port) ),
                          (str(oid))
            )

其中ip是ipv4地址。如何使用ipv6地址。我读过pysnmp也支持ipv6。我不知道怎么用这里的地址。在

谢谢。在


Tags: 代码fromimportip地址entityipv6pysnmp
1条回答
网友
1楼 · 发布于 2024-09-28 21:22:35

需要稍作调整才能将IPv6与“oneline”接口结合使用:

from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.carrier.asynsock.dgram import udp6
import socket

class Udp6TransportTarget(cmdgen.UdpTransportTarget):
    transportDomain = udp6.domainName

    def __init__(self, transportAddr, timeout=1, retries=5):
        self.transportAddr = (
            socket.getaddrinfo(transportAddr[0], transportAddr[1],
                               socket.AF_INET6,
                               socket.SOCK_DGRAM,
                               socket.IPPROTO_UDP)[0][4]
            )
        self.timeout = timeout
        self.retries = retries

    def openClientMode(self):
        self.transport = udp6.Udp6SocketTransport().openClientMode()
        return self.transport

print cmdgen.CommandGenerator().getCmd(
        cmdgen.CommunityData('public'),
        Udp6TransportTarget(('::1', 161)),
        '1.3.6.1.2.1.1.1.0')

相关问题 更多 >