【问题标题】:ipv6 support in pysnmppysnmp 中的 ipv6 支持
【发布时间】:2012-07-05 04:34:15
【问题描述】:

我正在使用以下代码:

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。我不知道如何使用这里的地址。

谢谢。

【问题讨论】:

    标签: python snmp ipv6 pysnmp


    【解决方案1】:

    需要稍作调整才能通过“oneline”接口使用 IPv6:

    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')
    

    【讨论】:

    • 我尝试了代码并得到了结果:(, 0, 0, []) 当我尝试ipv4localhost 代码,我得到 (None, Integer('noError'), Integer(0), [(ObjectName(1.3.6.1.2.1.1.1.0 ), OctetString('Darwin ashok.local 11.3.0 Darwin Kernel Version 11.3.0: Thu Jan 12 18:47:41 PST 2012; root:xnu-1699.24.23~1/RELEASE_X86_64 x86_64'))]) 即它有效.有什么问题?
    • 确保您的代理在 [::1]:161 监听。
    • 抱歉弄乱了我的 cmets,我也尝试了 getnext,但没有得到任何结果。
    • 假设您在 localhost 查询代理,“netstat -an | grep 161”命令应显示 ::1:161
    • 是的, ::1:161 不在列表中。如何让代理监听端口?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2018-06-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多