Quoted Text Here

i am doing a snmp monitoring tool using java.. how can i insert a word rather that inserting the object indentifier value in the text box. it will be more user friendly if users only need to insert the word rather than inserting the long value of OID(object identifier)...please help me..thank you in advance.

Inline Code Example Here

import java.util.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.*;
import java.awt.event.*;
import java.io.*;
import snmp.*;




public class SNMPInquisitor extends JFrame
                            implements ActionListener, Runnable
{

    JButton getDataButton, getTreewalkDataButton, getTableButton, getNextButton, setValueButton;
    JButton clearButton;
    JTextArea messagesArea;
    JScrollPane messagesScroll;
    JTextField hostIDField, communityField, OIDField, valueField;
    JLabel authorLabel, hostIDLabel, communityLabel, OIDLabel, valueLabel;
    JComboBox valueTypeBox;

    MenuBar theMenubar;
    Menu fileMenu;
    MenuItem aboutItem, quitItem, infoOid;

    Thread treewalkThread;

    SNMPv1CommunicationInterface comInterface;
    String community;
    InetAddress hostAddress;
    int version;


    // WindowCloseAdapter to catch window close-box closings
    private class WindowCloseAdapter extends WindowAdapter
    { 
        public void windowClosing(WindowEvent e)
        {
            System.exit(0);
        }
    };


    public SNMPInquisitor() 
    {
        treewalkThread = new Thread(this);

        setUpDisplay();

    }



    private void setUpDisplay()
    {


        this.setTitle("SNMP Inquisitor");

        this.getRootPane().setBorder(new BevelBorder(BevelBorder.RAISED));

        // set fonts to smaller-than-normal size, for compaction!
        /*
        FontUIResource appFont = new FontUIResource("SansSerif", Font.PLAIN, 10);
        UIDefaults defaults = UIManager.getLookAndFeelDefaults();
        Enumeration keys = defaults.keys();

        while (keys.hasMoreElements())
        {
            String nextKey = (String)(keys.nextElement());
            if ((nextKey.indexOf("font") > -1) || (nextKey.indexOf("Font") > -1))
            {
                UIManager.put(nextKey, appFont);
            }
        }
        */

        // add WindowCloseAdapter to catch window close-box closings
        addWindowListener(new WindowCloseAdapter());


        theMenubar = new MenuBar();
        this.setMenuBar(theMenubar);
        fileMenu = new Menu("File");

        aboutItem = new MenuItem("About...");
        aboutItem.setActionCommand("about");
        aboutItem.addActionListener(this);
        fileMenu.add(aboutItem);

        infoOid = new MenuItem("OID...");
        infoOid.setActionCommand("oid");
        infoOid.addActionListener(this);
        fileMenu.add(infoOid);

        fileMenu.addSeparator();

        quitItem = new MenuItem("Quit");
        quitItem.setActionCommand("quit");
        quitItem.addActionListener(this);
        fileMenu.add(quitItem);

        theMenubar.add(fileMenu);


        hostIDLabel = new JLabel("Device address:");
        hostIDField = new JTextField(20);
        hostIDField.setText("192.168.1.2");
        hostIDField.setEditable(true);

        OIDLabel = new JLabel("OID:");
        OIDField = new JTextField(20);
        OIDField.setEditable(true);

        valueLabel = new JLabel("Value (for Set):");
        valueField = new JTextField(20);
        valueField.setEditable(true);

        communityLabel = new JLabel("Community:");
        communityField = new JTextField(20);
        communityField.setText("public");
        communityField.setEditable(true);

       authorLabel = new JLabel("ANNETTE ARPANA ");
        authorLabel.setFont(new Font("SansSerif", Font.ITALIC, 8));


        getDataButton = new JButton("Get OID value");
        getDataButton.setActionCommand("get data");
        getDataButton.addActionListener(this);

        setValueButton = new JButton("Set OID value");
        setValueButton.setActionCommand("set value");
        setValueButton.addActionListener(this);

        getTableButton = new JButton("Get table");
        getTableButton.setActionCommand("get table");
        getTableButton.addActionListener(this);

        getNextButton = new JButton("Get next OID value");
        getNextButton.setActionCommand("get next");
        getNextButton.addActionListener(this);

        getTreewalkDataButton = new JButton("Get all OID values");
        getTreewalkDataButton.setActionCommand("get treewalk data");
        getTreewalkDataButton.addActionListener(this);

        clearButton = new JButton("Clear responses");
        clearButton.setActionCommand("clear messages");
        clearButton.addActionListener(this);

        messagesArea = new JTextArea(10,60);
        messagesScroll = new JScrollPane(messagesArea);

        valueTypeBox = new JComboBox();
        valueTypeBox.addItem("SNMPInteger");
        valueTypeBox.addItem("SNMPCounter32");
        valueTypeBox.addItem("SNMPCounter64");
        valueTypeBox.addItem("SNMPGauge32");
        valueTypeBox.addItem("SNMPOctetString");
        valueTypeBox.addItem("SNMPIPAddress");
        valueTypeBox.addItem("SNMPNSAPAddress");
        valueTypeBox.addItem("SNMPObjectIdentifier");
        valueTypeBox.addItem("SNMPTimeTicks");
        valueTypeBox.addItem("SNMPUInteger32");



        // now set up display

        // set params for layout manager
        GridBagLayout  theLayout = new GridBagLayout();
        GridBagConstraints c = new GridBagConstraints();

        c.gridwidth = 1;
        c.gridheight = 1;
        c.fill = GridBagConstraints.NONE;
        c.ipadx = 0;
        c.ipady = 0;
        c.insets = new Insets(2,2,2,2);
        c.anchor = GridBagConstraints.CENTER;
        c.weightx = 0;
        c.weighty = 0;


        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(theLayout);

        c.gridx = 1;
        c.gridy = 1;
        theLayout.setConstraints(getDataButton, c);
        buttonPanel.add(getDataButton);

        c.gridx = 2;
        c.gridy = 1;
        theLayout.setConstraints(getNextButton, c);
        buttonPanel.add(getNextButton);

        c.gridx = 3;
        c.gridy = 1;
        theLayout.setConstraints(getTableButton, c);
        buttonPanel.add(getTableButton);

        c.gridx = 4;
        c.gridy = 1;
        theLayout.setConstraints(getTreewalkDataButton, c);
        buttonPanel.add(getTreewalkDataButton);

        c.gridx = 5;
        c.gridy = 1;
        theLayout.setConstraints(setValueButton, c);
        buttonPanel.add(setValueButton);


        JPanel hostPanel = new JPanel();
        hostPanel.setLayout(theLayout);

        c.gridx = 1;
        c.gridy = 1;
        theLayout.setConstraints(hostIDLabel, c);
        hostPanel.add(hostIDLabel);

        c.gridx = 2;
        c.gridy = 1;
        theLayout.setConstraints(hostIDField, c);
        hostPanel.add(hostIDField);

        c.gridx = 1;
        c.gridy = 2;
        theLayout.setConstraints(communityLabel, c);
        hostPanel.add(communityLabel);

        c.gridx = 2;
        c.gridy = 2;
        theLayout.setConstraints(communityField, c);
        hostPanel.add(communityField);



        JPanel oidPanel = new JPanel();
        oidPanel.setLayout(theLayout);

        c.gridx = 1;
        c.gridy = 1;
        theLayout.setConstraints(OIDLabel, c);
        oidPanel.add(OIDLabel);

        c.gridx = 2;
        c.gridy = 1;
        theLayout.setConstraints(OIDField, c);
        oidPanel.add(OIDField);

        c.gridx = 1;
        c.gridy = 2;
        theLayout.setConstraints(valueLabel, c);
        oidPanel.add(valueLabel);

        c.gridx = 2;
        c.gridy = 2;
        theLayout.setConstraints(valueField, c);
        oidPanel.add(valueField);

        c.gridx = 3;
        c.gridy = 2;
        theLayout.setConstraints(valueTypeBox, c);
        oidPanel.add(valueTypeBox);


        c.gridwidth = 1;
        c.anchor = GridBagConstraints.CENTER;



        JPanel messagesPanel = new JPanel();
        messagesPanel.setLayout(theLayout);

        c.gridx = 1;
        c.gridy = 1;
        c.anchor = GridBagConstraints.WEST;
        JLabel messagesLabel = new JLabel("Responses:");
        theLayout.setConstraints(messagesLabel, c);
        messagesPanel.add(messagesLabel);

        c.gridx = 2;
        c.gridy = 1;
        c.anchor = GridBagConstraints.EAST;
        theLayout.setConstraints(clearButton, c);
        messagesPanel.add(clearButton);

        c.fill = GridBagConstraints.BOTH;
        c.gridx = 1;
        c.gridy = 2;
        c.gridwidth = 2;
        c.weightx = .5;
        c.weighty = .5;
        c.anchor = GridBagConstraints.CENTER;
        theLayout.setConstraints(messagesScroll, c);
        messagesPanel.add(messagesScroll);


        c.gridwidth = 1;
        c.weightx = 0;
        c.weighty = 0;



        this.getContentPane().setLayout(theLayout);


        c.gridx = 1;
        c.gridy = 1;
        theLayout.setConstraints(hostPanel, c);
        this.getContentPane().add(hostPanel);

        c.gridx = 1;
        c.gridy = 2;
        theLayout.setConstraints(oidPanel, c);
        this.getContentPane().add(oidPanel);

        c.gridx = 1;
        c.gridy = 3;
        theLayout.setConstraints(buttonPanel, c);
        this.getContentPane().add(buttonPanel);

        c.fill = GridBagConstraints.BOTH;
        c.gridx = 1;
        c.gridy = 4;
        c.weightx = .5;
        c.weighty = .5;
        theLayout.setConstraints(messagesPanel, c);
        this.getContentPane().add(messagesPanel);

        c.fill = GridBagConstraints.NONE;
        c.gridx = 1;
        c.gridy = 5;
        c.weightx = 0;
        c.weighty = 0;
        theLayout.setConstraints(authorLabel, c);
        this.getContentPane().add(authorLabel);





    }





    public void actionPerformed(ActionEvent theEvent)
    // respond to button pushes, menu selections
    {
        String command = theEvent.getActionCommand();


        if ("quit".equals(command))
        {
            System.exit(0);
        }



        if ("clear messages".equals(command))
        {
            messagesArea.setText("");
        }



        if ("about".equals(command))
        {
            AboutDialog aboutDialog = new AboutDialog(this);
        }



        if ("get data".equals(command))
        {
            try
            {

                String community = communityField.getText();
                int version = 0;    // SNMPv1
                InetAddress hostAddress = InetAddress.getByName(hostIDField.getText());
                SNMPv1CommunicationInterface comInterface = new SNMPv1CommunicationInterface(version, hostAddress, community);

                StringTokenizer st = new StringTokenizer(OIDField.getText(), " ,;");
                //System.out.println("st="+st);
                //st.
                //if(st.equals("system name"));

                while (st.hasMoreTokens())
                {
                    //if(st.nextToken().equals("system name") itemID="1.3.6.1.2.1.5.0");
                    //)
                    //String itemID = "";
                    //if(st.nextToken().equals("system name")) itemID="1.3.6.1.2.1.5.0";
                    String itemID = st.nextToken();    
                    SNMPVarBindList newVars = comInterface.getMIBEntry(itemID);
                    SNMPSequence pair = (SNMPSequence)(newVars.getSNMPObjectAt(0));
                    SNMPObjectIdentifier snmpOID = (SNMPObjectIdentifier)pair.getSNMPObjectAt(0);
                    SNMPObject snmpValue = pair.getSNMPObjectAt(1);
                    String typeString = snmpValue.getClass().getName();

                    if (typeString.equals("snmp.SNMPOctetString"))
                    {
                        String snmpString = snmpValue.toString();

                        // truncate at first null character
                        int nullLocation = snmpString.indexOf('\0');
                        if (nullLocation >= 0)
                            snmpString = snmpString.substring(0,nullLocation);

                        messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpString);
                        messagesArea.append("  (hex: " + ((SNMPOctetString)snmpValue).toHexString() + ")\n");
                    }
                    else
                    {
                        messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpValue);
                        messagesArea.append("\n");
                    }
                }    
            }
            catch(InterruptedIOException e)
            {
                messagesArea.append("Interrupted during retrieval:  " + e + "\n");
            }
            catch(Exception e)
            {
                messagesArea.append("Exception during retrieval:  " + e + "\n");
            }

        }



        if ("get next".equals(command))
        {
            try
            {

                String community = communityField.getText();
                int version = 0;    // SNMPv1
                InetAddress hostAddress = InetAddress.getByName(hostIDField.getText());
                SNMPv1CommunicationInterface comInterface = new SNMPv1CommunicationInterface(version, hostAddress, community);

                StringTokenizer st = new StringTokenizer(OIDField.getText(), " ,;");

                while (st.hasMoreTokens())
                {
                    String itemID = st.nextToken();    
                    SNMPVarBindList newVars = comInterface.getNextMIBEntry(itemID);
                    SNMPSequence pair = (SNMPSequence)(newVars.getSNMPObjectAt(0));
                    SNMPObjectIdentifier snmpOID = (SNMPObjectIdentifier)pair.getSNMPObjectAt(0);
                    SNMPObject snmpValue = pair.getSNMPObjectAt(1);
                    String typeString = snmpValue.getClass().getName();

                    if (typeString.equals("snmp.SNMPOctetString"))
                    {
                        String snmpString = snmpValue.toString();

                        // truncate at first null character
                        int nullLocation = snmpString.indexOf('\0');
                        if (nullLocation >= 0)
                            snmpString = snmpString.substring(0,nullLocation);

                        messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpString);
                        messagesArea.append("  (hex: " + ((SNMPOctetString)snmpValue).toHexString() + ")\n");
                    }
                    else
                    {
                        messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpValue);
                        messagesArea.append("\n");
                    }
                }    
            }
            catch(InterruptedIOException e)
            {
                messagesArea.append("Interrupted during retrieval:  " + e + "\n");
            }
            catch(Exception e)
            {
                messagesArea.append("Exception during retrieval:  " + e + "\n");
            }

        }



        if ("get table".equals(command))
        {
            try
            {

                String community = communityField.getText();
                int version = 0;    // SNMPv1
                InetAddress hostAddress = InetAddress.getByName(hostIDField.getText());
                SNMPv1CommunicationInterface comInterface = new SNMPv1CommunicationInterface(version, hostAddress, community);

                String itemID = OIDField.getText();    

                SNMPVarBindList newVars = comInterface.retrieveMIBTable(itemID);

                // print the retrieved stuff
                for (int i = 0; i < newVars.size(); i++)
                {
                    SNMPSequence pair = (SNMPSequence)(newVars.getSNMPObjectAt(i));

                    SNMPObjectIdentifier snmpOID = (SNMPObjectIdentifier)pair.getSNMPObjectAt(0);
                    SNMPObject snmpValue = pair.getSNMPObjectAt(1);
                    String typeString = snmpValue.getClass().getName();

                    if (typeString.equals("snmp.SNMPOctetString"))
                    {
                        String snmpString = snmpValue.toString();

                        // truncate at first null character
                        int nullLocation = snmpString.indexOf('\0');
                        if (nullLocation >= 0)
                            snmpString = snmpString.substring(0,nullLocation);

                        messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpString);
                        messagesArea.append("  (hex: " + ((SNMPOctetString)snmpValue).toHexString() + ")\n");
                    }
                    else
                    {
                        messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpValue);
                        messagesArea.append("\n");
                    }

                }
            }
            catch(InterruptedIOException e)
            {
                messagesArea.append("Interrupted during retrieval:  " + e + "\n");
            }
            catch(Exception e)
            {
                messagesArea.append("Exception during retrieval:  " + e + "\n");
            }

        }




        if ("set value".equals(command))
        {
            try
            {

                String community = communityField.getText();
                int version = 0;    // SNMPv1
                InetAddress hostAddress = InetAddress.getByName(hostIDField.getText());
                SNMPv1CommunicationInterface comInterface = new SNMPv1CommunicationInterface(version, hostAddress, community);


                String itemID = OIDField.getText();
                String valueString = valueField.getText();
                String valueTypeString = (String)valueTypeBox.getSelectedItem();
                valueTypeString = "snmp." + valueTypeString;

                SNMPObject itemValue;
                Class valueClass = Class.forName(valueTypeString);
                itemValue = (SNMPObject)valueClass.newInstance();
                itemValue.setValue(valueString);

                SNMPVarBindList newVars = comInterface.setMIBEntry(itemID, itemValue);

                SNMPSequence pair = (SNMPSequence)(newVars.getSNMPObjectAt(0));

                SNMPObjectIdentifier snmpOID = (SNMPObjectIdentifier)pair.getSNMPObjectAt(0);

                SNMPObject snmpValue = pair.getSNMPObjectAt(1);

                String typeString = snmpValue.getClass().getName();

                messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpValue);

                if (typeString.equals("snmp.SNMPOctetString"))
                    messagesArea.append("  (hex: " + ((SNMPOctetString)snmpValue).toHexString() + ")\n");
                else
                    messagesArea.append("\n");

            }
            catch(InterruptedIOException e)
            {
                messagesArea.append("Interrupted during retrieval:  " + e + "\n");
            }
            catch(Exception e)
            {
                messagesArea.append("Exception during retrieval:  " + e + "\n");
            }

        }




        if ("get treewalk data".equals(command))
        {
            if (!treewalkThread.isAlive())
            {
                treewalkThread = new Thread(this);
                treewalkThread.start();
                getTreewalkDataButton.setText("Stop OID retrieval");
            }
            else
            {
                treewalkThread.interrupt();
            }
        }




    }






    public void run() 
    {

        try
        {

            String community = communityField.getText();
            int version = 0;    // SNMPv1
            InetAddress hostAddress = InetAddress.getByName(hostIDField.getText());
            SNMPv1CommunicationInterface comInterface = new SNMPv1CommunicationInterface(version, hostAddress, community);


            //String itemID = "1.3.6.1.2.1.1.1.0";    // start with device name
            String itemID = "";            
            String retrievedID = "1.3.6.1.2.1";        // start point


            while (!Thread.interrupted() && !retrievedID.equals(itemID))
            {
                itemID = retrievedID;

                SNMPVarBindList newVars = comInterface.getNextMIBEntry(itemID);

                SNMPSequence pair = (SNMPSequence)(newVars.getSNMPObjectAt(0));
                SNMPObjectIdentifier snmpOID = (SNMPObjectIdentifier)pair.getSNMPObjectAt(0);
                SNMPObject snmpValue = pair.getSNMPObjectAt(1);
                retrievedID = snmpOID.toString();
                String typeString = snmpValue.getClass().getName();

                if (typeString.equals("snmp.SNMPOctetString"))
                {
                    String snmpString = snmpValue.toString();

                    // truncate at first null character
                    int nullLocation = snmpString.indexOf('\0');
                    if (nullLocation >= 0)
                        snmpString = snmpString.substring(0,nullLocation);

                    messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpString);
                    messagesArea.append("  (hex: " + ((SNMPOctetString)snmpValue).toHexString() + ")\n");
                }
                else
                {
                    messagesArea.append("OID: " + snmpOID + "  type: " + typeString + "  value: " + snmpValue);
                    messagesArea.append("\n");
                }
            }


        }
        catch(InterruptedIOException e)
        {
            messagesArea.append("Interrupted during retrieval:  " + e + "\n");
        }
        catch(Exception e)
        {
            messagesArea.append("Exception during retrieval:  " + e + "\n");
        }
        catch(Error err)
        {
            messagesArea.append("Error during retrieval:  " + err + "\n");
        }

        getTreewalkDataButton.setText("Get all OID values");

    }








    private String hexByte(byte b)
    {
        int pos = b;
        if (pos < 0)
            pos += 256;
        String returnString = new String();
        returnString += Integer.toHexString(pos/16);
        returnString += Integer.toHexString(pos%16);
        return returnString;
    }









    public static void main(String args[]) 
    {
        try
        {
            SNMPInquisitor theApp = new SNMPInquisitor();
            theApp.pack();
            theApp.setSize(700,500);
            theApp.setVisible(true);
        }
        catch (Exception e)
        {
            System.out.println("Exception starting app: " + e.toString());
        }
    }


}

#

Recommended Answers

All 14 Replies

Please explain why the program can not read a String vs the number from the user? Where in the code (700+ lines) is the problem? A text field takes text (String) data, not numberic data.

i m not sure how to put in a string rather than the number. line 700 is not the problem. my coding has no problem. i just want to try putting in a name rather than inserting an OID value to get the output

Where in the code does it read input from the user?
There isn't a statement at line 700 in what is posted.

it will get from the OIDField...yes there is no coding in line 700 sorry.

The textfield's getText() method returns a String. Can you explain what you want the code to do with the String value it gets from the OIDField textfield?

when i enter the itemID in my interface in the textbox OIDField i enter the OID value of the device for example 1.3.6.1.2.1.5.0 which means the switch's name but now i am trying to just enter in the textbox the name of the function itself. for example rather than entering 1.3.6.1..

when i enter the itemID in my interface in the textbox OIDField i enter the OID value of the device for example 1.3.6.1.2.1.5.0 which means the switch's name but now i am trying to just enter in the textbox the name of the function itself. for example rather than entering 1.3.6.1.2.1.5.0 i want to enter "switch name" and then the system will automatically know tht "switch name" = 1.3.6.1.2.1.5.0 how should i do this do i use double array. please do help realy will appreciate it

You could use two arrays, but that's a pretty messy solution. Java has a HashMap class that lets you create pairs of key/value and it will look up the value from the key for you. This example creates a map with Strings for the key and value, adds a couple of entries with a name for the key and an OID for the value, then does a lookup up the OID from the name.

HashMap<String, String> lookup = new HashMap<String, String>();
lookup.put("switch name", "1.3.6.1.2.1.5.0");
lookup.put("another name", "1.3.6.1.2.1.5.1");
System.out.println(lookup.get("another name"));

thank you very much. should i put this in the inquisitor class or create a new class?

HashMap<String, String> lookup = new HashMap<String, String>();
lookup.put("switch name", "1.3.6.1.2.1.5.0");
lookup.put("another name", "1.3.6.1.2.1.5.1");
System.out.println(lookup.get("another name"));

how should i implement this hashmap in the class SNMPInquisitor. i have create a hashmap class but it does not relate to the other class.. the output wen i run hashmap is only this:
1.3.6.1.2.1.1.4.0
switch name= 1.3.6.1.2.1.1.5.0
another name= 1.3.6.1.2.1.1.4.0

Easiest way is just to make the HashMap an ordinary member of whatever class does the user interface. Fill it full of the name/number combinations at the beginning of the program, then use it to look up names and get the corresponding numbers whenever the user needs them.

can you give me an example coding for that please?. sori im quite new to java.

I already gave you sample code to create a HashMap, add entries to it, and look one up (one week ago).

Easiest way is just to make the HashMap an ordinary member of whatever class does the user interface. Fill it full of the name/number combinations at the beginning of the program, then use it to look up names and get the corresponding numbers whenever the user needs them

i mean from your comment,you said to make the HashMap an ordinary member to the SNMPInquisitor.can you give me an example for that?..do you mean to just add a textbox and search for the oid value using HashMap and then the value will pop up in the textbox?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.