📄 snmpserver.java
字号:
final String slot44e1loop1="1.3.6.1.4.1.25449.30.1.9.2.2.0";
final String slot44e1loop2="1.3.6.1.4.1.25449.30.2.9.2.2.0";
//8E1卡
//告警屏蔽
final String slot48e1war1="1.3.6.1.4.1.25449.30.1.9.3.1.0";
final String slot48e1war2="1.3.6.1.4.1.25449.30.2.9.3.1.0";
//环回设置
final String slot48e1loop1="1.3.6.1.4.1.25449.30.1.9.3.2.0";
final String slot48e1loop2="1.3.6.1.4.1.25449.30.2.9.3.2.0";
//单V.35卡
//告警屏蔽
final String slot4v35war1="1.3.6.1.4.1.25449.30.1.9.4.1.0";
final String slot4v35war2="1.3.6.1.4.1.25449.30.2.9.4.1.0";
//环回设置
final String slot4v35loop1="1.3.6.1.4.1.25449.30.1.9.4.2.0";
final String slot4v35loop2="1.3.6.1.4.1.25449.30.2.9.4.2.0";
//参数配置
final String slot4v35para1="1.3.6.1.4.1.25449.30.1.9.4.3.0";
final String slot4v35para2="1.3.6.1.4.1.25449.30.2.9.4.3.0";
//双路V.35卡
//告警屏蔽
final String slot42v35war1="1.3.6.1.4.1.25449.30.1.9.7.1.0";
final String slot42v35war2="1.3.6.1.4.1.25449.30.2.9.7.1.0";
//环回设置
final String slot42v35loop1="1.3.6.1.4.1.25449.30.1.9.7.2.0";
final String slot42v35loop2="1.3.6.1.4.1.25449.30.2.9.7.2.0";
//参数配置
final String slot42v35para1="1.3.6.1.4.1.25449.30.1.9.7.3.0";
final String slot42v35para2="1.3.6.1.4.1.25449.30.2.9.7.3.0";
//四路V.35卡
//告警屏蔽
final String slot44v35war1="1.3.6.1.4.1.25449.30.1.9.8.1.0";
final String slot44v35war2="1.3.6.1.4.1.25449.30.2.9.8.1.0";
//环回设置
final String slot44v35loop1="1.3.6.1.4.1.25449.30.1.9.8.2.0";
final String slot44v35loop2="1.3.6.1.4.1.25449.30.2.9.8.2.0";
//参数配置
final String slot44v35para1="1.3.6.1.4.1.25449.30.1.9.8.3.0";
final String slot44v35para2="1.3.6.1.4.1.25449.30.2.9.8.3.0";
/*告警信息检测*/
final String warinfo="1.3.6.1.4.1.25449.30.1.2.0";
PDU vPDU;
String re;
String oid;
public Handler(){}
public void configure(){
try{
InetAddress ia=InetAddress.getLocalHost();
mAddress =ia.getHostAddress();
}
catch(Exception e){e.printStackTrace();}
mPort = 10001;
mMyCommunityName = "public";
}
public void start(){
try {
f = new FileInputStream("MYMIB.PROPERTIES");
p.load(f);
mServerSocket = new DefaultUdpTransportMapping(new
UdpAddress(java.net.InetAddress.getByName(mAddress),
mPort));
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
JPanel jp=new JPanel(new GridLayout(2,1));
jt.setText("c1:00:00:01:00:02:80:00:00:04:00:0f:00:07:00:36:00:08:00:36:00:a2:aa:60:c0:01:00:01:00:02:80:00:00:04:00:0f:00:07:00:36:00:08:00:36:00:a2:aa:60");
jp.add(jt);
jp.add(new JLabel("SNMP SERVER WORKING...."));
jp.setBackground(Color.lightGray);
jf.getContentPane().add(jp);
jf.setSize(200,100);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = jf.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
jf.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
mSNMP = new Snmp(mServerSocket);
mSNMP.addCommandResponder(this);
jf.setVisible(true);
mServerSocket.listen();
}
catch(Exception ee){ee.printStackTrace();}
}
public synchronized void processPdu(CommandResponderEvent aEvent){
//String vCommunityName = new String(aEvent.getSecurityName());
vPDU = aEvent.getPDU();
if (vPDU == null) {
System.out.println("Null pdu");
}//
else {
System.out.println("接收到的请求 : " + vPDU.toString());
try{
re="";
oid = vPDU.getVariableBindings().toString().substring(1,
vPDU.getVariableBindings().toString().indexOf(" ="));
System.out.println("接收到的请求 :" + oid+"::");
switch (vPDU.getType()) { //共有GET,GETNEXT,INFORM,GETBULK,SET
case PDU.GET:
try{wait(400);
if(oid.equals(warinfo)){
re=jt.getText();
}
else
re=p.getProperty(oid);
}catch(Exception eee){eee.printStackTrace();}
break;
case PDU.GETNEXT:break;
case PDU.GETBULK:break;
case PDU.INFORM:break;
case PDU.SET:
FileOutputStream fos = new FileOutputStream(new File("MYMIB.PROPERTIES"));
p.setProperty(oid,
vPDU.getVariableBindings().toString().substring(
vPDU.getVariableBindings().toString().indexOf("= ")+2,
vPDU.getVariableBindings().toString().indexOf(']')));
p.store(fos,null);
break;
case PDU.TRAP:break;
//
}//举个例子,比如你想发送1.3.6.1.4.1.25449.3.0,
StatusInformation statusInformation =
new StatusInformation();
StateReference ref = aEvent.getStateReference();
System.out.println("Sending response");
vPDU.setType(PDU.RESPONSE);
vPDU.set(0,new VariableBinding(vPDU.get(0).getOid(),new OctetString((re))));
System.out.println(vPDU);
aEvent.getMessageDispatcher().returnResponsePdu( //发送数据函数
aEvent.getMessageProcessingModel(),
aEvent.getSecurityModel(), aEvent.getSecurityName(),
aEvent.getSecurityLevel(), vPDU, aEvent.getMaxSizeResponsePDU(),
ref,
statusInformation);
}
catch (Exception vException) {
vException.printStackTrace();
System.out.println(vException);
}
}
}
}
public static void main(String[] arg){
Handler h = new Handler();
h.configure();
h.start();
new Thread(new Runnable(){
public void run(){
while( true ) {
synchronized(snmpServer.class){
try{
snmpServer.class.wait();
}
catch( Exception e ){
e.printStackTrace();
}
}
}
}
}).start();
}
public static byte[] get_byte(String value){
byte[] b=null;
int times=0;
char[] c=value.toCharArray();
for(int i=0;i<c.length;i++){
if(c[i]==':'){
times++;
}
}
if(times==0){
b=new byte[1];
b[0]=(byte)Integer.parseInt(value,16);
}
else{
b=new byte[times+1];
for(int i=0;i<b.length-1;i++){
String s_4=value.substring(0,value.indexOf(":"));
int a=Integer.parseInt(s_4,16);
value=value.substring(value.indexOf(":")+1);
b[i]=(byte)a;
}
b[times]=(byte)Integer.parseInt(value,16);
}//
return b;
}
public void checkTraps(){//检验机器故障的函数。用于向管理机发送trap报文。
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -