java - 以编程方式启用/禁用网络交换机上的端口

标签 java networking snmp

您好!

我正在尝试在 Java 中找到一种方法,通过 SNMP 以编程方式启用/禁用网络交换机上的端口。我尝试使用 SNMP4J,但无法在邮件列表上获得有关如何使用它的太多帮助。我不太关心使用什么库(开源与商业),只要它能完成工作即可。

我尝试使用的交换机是 Cisco 3750 交换机。

问候, 詹姆斯

最佳答案

您可以使用以下简单代码来使用 snmp4j 启用/禁用交换机端口。

它启用端口 1 并禁用端口 6。

package com.mobinet.snmp;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultTcpTransportMapping;

/**
 *
 * @author batbayar
 */
public class SnmpTest {
    private String address = "192.168.1.254/161"; // switch address and snmp port
    private String writeCommunity = "myCommunityWrite"; // write community name

    private Snmp snmp;
    private CommunityTarget target;

    public SnmpTest() {
        try {
            TransportMapping transport = new DefaultTcpTransportMapping();
            snmp = new Snmp(transport);

            Address targetAddress = GenericAddress.parse(address);
            target = new CommunityTarget();
            target.setCommunity(new OctetString(writeCommunity));
            target.setAddress(targetAddress);
            target.setRetries(2);
            target.setTimeout(1500);
            target.setVersion(SnmpConstants.version2c);

            PDU command = new PDU();
            command.setType(PDU.SET);
            command.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.7.1"), new Integer32(2))); // port 1 down
            command.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.7.6"), new Integer32(1))); // port 6 up
            ResponseEvent response = snmp.send(command, target);
            System.out.println("response: " + response);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        SnmpTest test = new SnmpTest();
    }
}

关于java - 以编程方式启用/禁用网络交换机上的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3629972/

相关文章:

java - 带有Gradle和Eclipse的MapStruct无法正常工作

java - 如何查看给定目录中所有 jar 的所有内容?

snmp - 在 SNMP MIB 中, "MODULE-IDENTITY"和 "OBJECT IDENTIFIER"有什么区别?

c++ - 有关 C++ 中的 SNMP 的帮助吗?

c# - 获取我们收到 UDP 多播请求的 IP 地址

在 chroot 模式下从二进制调用脚本,不起作用

Java 数组赋值(多个值)

java - 对象在回调函数之外变为 null

c++ - 使用 cURL 获取 HTTP xml 错误响应

http - 使用 Nodejs HTTP 服务器的自定义 HTTP 方法