SnmpServer.java
package eu.linuxengineering.snmp;
import java.util.List;
import eu.javaexperience.collection.list.NullList;
import eu.javaexperience.log.JavaExperienceLoggingFacility;
import eu.javaexperience.log.LogLevel;
import net.sf.snmpadaptor4j.SnmpConfiguration;
import net.sf.snmpadaptor4j.SnmpManagerConfiguration;
import net.sf.snmpadaptor4j.api.SnmpApiFactory;
import net.sf.snmpadaptor4j.api.SnmpDaemon;
import net.sf.snmpadaptor4j.api.SnmpMib;
import net.sf.snmpadaptor4j.api.opennms.OpennmsSnmpApiFactory;
import net.sf.snmpadaptor4j.object.SnmpDataType;
public class SnmpServer
{
protected SnmpDaemon adaptor;
public SnmpServer(String bindAddress, int port, SnmpMib root) throws Exception
{
final SnmpApiFactory apiFactory = new OpennmsSnmpApiFactory();
SnmpConfiguration cfg = new SnmpConfiguration()
{
@Override
public String getListenerWriteCommunity()
{
return "private";
}
@Override
public Integer getListenerSnmpVersion()
{
return 2;
}
@Override
public String getListenerReadCommunity()
{
return "public";
}
@Override
public Integer getListenerPort()
{
return port;
}
@Override
public String getListenerAddress()
{
return bindAddress;
}
@Override
public List<SnmpManagerConfiguration> getManagerList()
{
return NullList.instance;
}
};
adaptor = apiFactory.newSnmpDaemon(cfg, root);
}
public void start() throws Exception
{
adaptor.start();
}
public void stop() throws Exception
{
adaptor.stop();
}
public static void main(String[] args) throws Exception
{
JavaExperienceLoggingFacility.setFutureDefaultLoglevel(LogLevel.DEBUG);
JavaExperienceLoggingFacility.addStdOut();
SnmpMibDispatch disp = new SnmpMibDispatch();
SnmpTools.addRoAccessorToPath(disp, new int[] {1, 25, 2}, SnmpDataType.octetString, ()->"Hello World", false);
SnmpServer server = new SnmpServer("0.0.0.0", 2100, disp);
server.start();
}
}