Мониторинг windows переменных с помощью SNMP java manager - PullRequest
0 голосов
/ 12 января 2020

Мне нужно отслеживать информацию об определенных IP-адресах в моей сети. Эта информация будет: имена устройств, их местоположение, пропускная способность каждого порта и показатели производительности сети. Я создал менеджер SNMP, используя Java:

import java.io.IOException;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.Target;
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.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class SNMPManager {

    Snmp snmp = null;
    String Agent = "udp:localhost/161";
    String Oid="1.3.6.1.4.1.9600.1.22.8.5.1.5.";

    public static void main(String[] args) throws IOException {

        SNMPManager client = new SNMPManager();
        client.start();
        int counter=0;
        //while(true){
        try{
        String ODIValue = client.getAsString(new OID(client.Oid));//Decrypt the OID
        System.out.println("OID is "+ client.Oid);
        System.out.println("ODIValue is "+ODIValue);
        System.out.println("---------------------------------------------");
        }catch(Exception e){
            System.out.println("Error "+ counter++);
        }
        //}
    }

    private void start() throws IOException {
        TransportMapping transport = new DefaultUdpTransportMapping();
        snmp = new Snmp(transport);
        transport.listen();
    }


    public String getAsString(OID oid) throws IOException {
        ResponseEvent event = get(new OID[] { oid });//Get IOD from agent
        return event.getResponse().get(0).getVariable().toString(); //Should respond with the OID
    }

    public ResponseEvent get(OID oids[]) throws IOException {
        PDU pdu = new PDU();
        for (OID oid : oids) {
            pdu.add(new VariableBinding(oid));
        }
        pdu.setType(PDU.GET);
        ResponseEvent event = snmp.send(pdu, getTarget(), null);
        if(event != null) {
            return event;
        }
        throw new RuntimeException("Time out occured");
    }

    private Target getTarget() {
        Address targetAddress = GenericAddress.parse(Agent);
        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString("public"));
        target.setAddress(targetAddress);
        target.setRetries(2);
        target.setTimeout(1500);
        target.setVersion(SnmpConstants.version2c);
        return target;
    }

}

Я использую порт 161 для SNMP и локальный хост для моего компьютера. Я также включил функцию SNMP на своем windows 10. Теперь я ожидаю получить версию операционной системы, но ничего не появляется. В чем проблема?

И мне также нужно знать, где найти файл MIB на моем windows, чтобы знать все коды системных переменных.

1 Ответ

0 голосов
/ 11 апреля 2020

Я работал над проектом с аналогичными требованиями, где мы использовали для мониторинга данных удаленных IP-адресов. Вы можете посмотреть исходный код здесь github.com / ashish2199 / Nework_Bandwidth_Monitor

...