我正在使用以下代码:
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。我不知道如何使用这里的地址。
谢谢。
需要进行一些调整才能通过“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')
我是一名优秀的程序员,十分优秀!