Frequently Asked Questions
Answers to many of the commonly asked questions are provided below to assist our existing customers quickly resolve problems.
SimpleTester
- When I try to compile my MIBs, I get errors....
- If an Agent supports multiple MIBs, what is the best way to test it...
- I am using the dongle based licensing, and I have connected the dongle to the parallel port, but the software does not detect it.
SimpleAgentPro
- On UNIX platforms, when I click on the "Compile" button during MIB compilation, nothing happens.
- On Solaris 2.5.1 platform, the "Browse" dialog box is difficult to use with beginning of the full path name displayed, instead of just the file name.
- The MIB compilation did not work and gave a lot of errors and warnings.
- How do I make the simulated agents send a cold start trap when they are started?
- When I start the SimpleAgentPro, I get an error that says "Cannot bind to port 161".
- How can I run multiple invocations of the SimpleAgentPro?
- What do I have to do to support dynamic row creation? Can I then add rows using the tcl commands?
- How can I share one .var file among many devices, yet have the correct values returned for tables such as the ipAddrTable in MIB2?
- What are the restrictions on the IP address that can be assigned to the devices being simulated?
- How can my management application talk with the simulated devices if they have IP addresses on a different subnet?
- How many devices can be in one map?
- Basic Troubleshooting on Windows NT
- Basic Troubleshooting on Solaris
- What can I do if I do not want the users of SimpleAgentPro to be root on Solaris?
SimpleAgent
- When I try to compile my MIBs, I get errors....
- When I try to compile my MIBs, I get errors....
The MIB compiler provided by SimpleSoft is fairly stringent in
checking for syntax errors. This helps you make sure that the MIBs
provided by you to your customers are error free and will compile
with most third party mib compilers.
Typical MIB errors are different names, and data types for MIB
variables in the tableEntry declaration, versus actual columnar
definitions.
Example:
aNewDataType ::=OCTET STRING
tableEntry OBJECT-TYPE
SYNTAX TableEntryA
....
TableEntryB ::=
SEQUENCE {
column1
INTEGER,
column2
Counter,
....
}
....
columnA OBJECT-TYPE
SYNTAX INTEGER {
Up (1),
almost_down(2),
down(3)
}
...
column 2 OBJECT-TYPE
SYNTAX Gauge
...
The above Example contains 6 errors:
- User defined data types like "aNewDataType" should start
with a capital letter. The valid way would be "ANewDataType".
- The SYNTAX of table Entry is of type "TableEntryA", while
later on "TableEntryB" is defined instead of "TableEntryA". Make
sure that the strings match.
- The object descriptor "column1" is used in the definition of
the SEQUENCE for tableEntry, while the words "columnA" are used
in the column definition itself. Make sure that the object
descriptors are the same.
- One of the labels for the values in the enumerated integer
columnA starts with a upper case character ("Up(1)") The correct
way is "up"(1).
- One of the labels for the values in the enumerated integer
contains an underscore "_".("almost_down(2)") Underscore
characters are not allowed. A possible valid alternative would
be "almost-down(2)".
- The column2 is defined as a Counter in the SEQUENCE, but
defined as a GAUGE in the actual OBJECT TYPE definition.
Warnings from the MIB Compiler are suggestions for a better MIB
definition file, but dealing with them can be postponed, if
desired. You can also compile the MIBs in a lenient mode.
- If an Agent supports multiple MIBs, what is the best
way to test it...
it is easier to start off by testing one MIB at time. Once all
the MIBs are tested, you can test the complete Agent.
When you first test a particular MIB in a testAgent, select
First Row only option for Walk Rows field in the Get Variables to
Test screen and select First Row only option for Test Rows field
in the Settings screen.
This will retrieve and test the first rows in a table only. Now
run all the tests, and fix the errors found. The reason for doing
that is if a table has 100 rows, the routines that implement the
first row will most likely be the same as the routines that
implement the 100th row. So rather than seeing the error reported
100 times, for the 100 instances, you can see it only once, and
fix it.
After the tests in the test suites run without unaccountable
errors, create a script file using the Script Generator with the
Test Operation field set to "Set and Check" only. Run the created
script in the Script Runner, with the Output Field set to Errors
only. Look at the errors in the output file and then fix all the
unaccountable errors.
Now you can do the full blown tests, with the Walk Rows field
in the Get Variables to Test screen set to All Rows, and the Test
Rows field in the Settings screen set to All Rows as well.
- I am using the dongle based licensing, and I have
connected the dongle to the parallel port, but the software does
not detect it.
On Windows NT/2000, it is necessary to install the device
drivers for the dongle for the software to be able to "see" the
dongle. The device drivers are present in the
stester32/dongle sub-directory. For Windows NT/2000,
go the stester32/dongle/win_nt sub-directory and
launch the progam "setupx86.exe". Choose its Functions menu item,
and select "Install Device Driver". Click on OK on the path, and
then reboot the machine when the installation of the device driver
is completed.
Sometimes, even if the device driver is installed, the software
is unable to detect the dongle. In this case, check if the
parallel port is disabled in the BIOS.
- On UNIX platforms, when I click on the "Compile"
button during MIB compilation, nothing happens.
The SimpleAgentPro uses standard utilities like "xterm" and
"vi" to carry out some of the tasks. Find out where the utility
"xterm" is located on your system and then make sure that your
PATH variable includes that directory.
- On Solaris 2.5.1 platform, the "Browse" dialog box is
difficult to use with beginning of the full path name displayed,
instead of just the file name.
Check the "Frequently Asked Questions" section in the built-in
help for the answer.
- The MIB compilation did not work and gave a lot of
errors and warnings.
The SimpleAgentPro uses a fairly stringent MIB compiler that
catches a lot of errors in the MIBs. You need to fix these errors
before the SimpleAgentPro can use the information in the MIBs. In
Version 1.4 and above a file called "miberrs.out" is created in
the current working directory that contains all the errors and
warnings produced by the MIB compiler/sorter programs. The warning
can be ignored, but not the errors. The errors also cause the
compiled MIB file (cmf file) to be partially complete, which might
make the SimpleAgentPro work incorrectly.
Typical MIB errors are different names, and data types for MIB
variables in the tableEntry declaration, versus actual columnar
definitions. Example:
mY-MIB DEFINITIONS ::= BEGIN
...
aNewDataType ::=OCTET STRING
tableEntry OBJECT-TYPE
SYNTAX TableEntryA
....
TableEntryB ::=
SEQUENCE {
column1
INTEGER,
column2
Counter,
....
}
....
columnA OBJECT-TYPE
SYNTAX INTEGER {
Up (1),
almost_down(2),
down(3)
}
...
column 2 OBJECT-TYPE
SYNTAX Gauge
...
The above Example contains 7 errors:
- MIB Names like "mY-MIB" should start with a capital letter.
The valid way would be "MY-MIB".
- User defined data types like "aNewDataType" should start
with a capital letter. The valid way would be "ANewDataType".
- The SYNTAX of table Entry is of type "TableEntryA", while
later on "TableEntryB" is defined instead of "TableEntryA". Make
sure that the strings match.
- The object descriptor "column1" is used in the definition of
the SEQUENCE for tableEntry, while the words "columnA" are used
in the column definition itself. Make sure that the object
descriptors are the same.
- The column2 is defined as a Counter in the SEQUENCE, but
defined as a GAUGE in the actual OBJECT TYPE definition.
- One of the labels for the values in the enumerated integer
columnA starts with a upper case character ("Up(1)") The correct
way is "up"(1).
- One of the labels for the values in the enumerated integer
contains an underscore "_".("almost_down(2)") Underscore
characters are not allowed. A possible valid alternative would
be "almost-down(2)".
Warnings from the MIB Compiler are suggestions for a better MIB
definition file, but dealing with them can be postponed, if
desired.
- How do I make the simulated agents send a cold start
trap when they are started ?
The SimpleAgentPro installation includes a sample modeling file
called "dev1.tcl" which has example code that you can use to send
a cold start trap at initialization time. Typically the
enterpriseid field of a cold start trap is set the value of
sysObjectId.0. The tcl script first gets this value at startup and
then sends a cold start trap to a specified trap receipient
manager, say 128.100.100.60. # example of initial action that causes a cold start trap to
# be emitted to the associated trap manager
%init_action
set varbind [SA_getvar {sysObjectID.0}]
set vb1 [lindex $varbind 0]
set val1 [lindex $vb1 2]
set args [list $val1 0 0 ]
SA_settrapmgrs 128.100.100.60
SA_sendtrap $args
- When I start the SimpleAgentPro, I get an error that
says "Cannot bind to port 161".
The SimpleAgentPro by default tries to open up port 161 on the
local machine. Only one process can bind to a specific port at a
time. On your machine you probably have a snmp daemon process
running that is currently bound to port 161. The easiest way is to
kill this snmp daemon process, and then run the SimpleAgentPro. Do
a "ps -e | grep snmp" and see if there is any snmp daemon process
running.
Sometimes, it is not possible to kill the local snmp daemon. On
systems where HP OpenView is also running, the snmp daemon is used
for other management tasks. In this case do the following:
- Edit the config.inp file and add the line "HPOV = YES". This
tells the SimpleAgentPro not to open up port 161 on the local
machine. It will open up port 161 only for the simulated
devices. In this mode, SimpleAgentPro does not support community
string based proxys.
- Kill the snmpd process started by HP OpenView. Now start the
SimpleAgentPro and its map. Then start the snmpd process once
again by typing "snmpd". You can also start the snmpd on another
port just to be sure by using the command "snmpd -Port 3000".
The reason for killing the snmpd, starting SimpleAgentPro, and
then re-starting the snmpd is that the way the snmpd does a
bind, it ends up binding with port 161 on all the multi-homed
addresses, instead of just port 161 on the local worstation
address. Killing it, and starting SimpleAgentPro allows the
SimpleAgentPro to bind with port 161 on the other multi-homed
addresses that it is simulating.
On NT machines, you should make sure that the SNMP service is
not running (Control Panel/Services)
- How can I run multiple invocations of the SimpleAgentPro?
To run multiple invocations of SimpleAgentPro, you must have
the line "HPOV = YES" present in your config.inp. This makes the
SimpleAgentPro not open up port 161 on the local machine and thus
removes the conflict of two SimpleAgentPros' trying to open the
same port. Proxy mode is not supported in this case.
If you are running on the SUN Solaris platform, you also need
to set the starting interface number so that the two invocations
do not overwrite each others multi-homed IP definitions. For
example, if the first invocation of the SimpleAgentPro has a map
with 18 addresses, and the next one has a map with 7 addresses,
then:
- Start the first map.
- After the first map has started, start another invocation of
the SimpleAgentPro. In this invocation, under Map->Start
Interface., change the starting interface number from 0 to 20
(since the first map has used up 18 interfaces from 1-18, and
using two numbers for a safety padding). Now start the next map.
It will use up interfaces 21-27.
Additional maps can be started in the same manner.
- What do I have to do to support dynamic row creation? Can I then add rows using the tcl commands?
The dynamic row templates in the .var file tell the
SimpleAgentPro that a particular table support dynamic row
creation. To make the SimpleAgentPro create dynamic row templates,
select the "Create dynamic row templates" box, when creating
variables from MIB or learning variables from device. To create
templates for tables that have read-only columns, add the line
%DYNROW ALL to the default rules file used during the variable
file creation.
Once the templates are created, you need to remove the starting
hash sign to make use of them. By default, they are created as
comments. Following is an example of a dynamic row template for
the ipNetToMedia table followed by a tcl script to add rows to it.
Part of the .var file:
=====================
# template for dynamic row.
# To use, please remove the starting hash signs
%drow 1.3.6.1.2.1.4.22.1 newinstance
%dcol ipNetToMediaIfIndex NotReq Integer RW dfixed(1)
%dcol ipNetToMediaPhysAddress Req OctetString RW \
r_lastset(6, 6, 0x010203040506)
%dcol ipNetToMediaNetAddress NotReq IpAddress RW \
dfixed(1.2.3.4)
%dcol ipNetToMediaType Req Integer RW \
r_lastset(1, 4, 1)
%setaction ipNetToMediaType Integer 2 deleterow()
#
Please note that the starting hash signs have been removed and
the has been changed to an actual value.
A tcl script that adds a row to this table with ifIndex of 3,
and IP Address of 128.100.100.120 would look like: SA_setvar{{ipNetToMediaPhysAddress.3.128.100.100.120 OctetString \
0x01203040909 }
{ipNetToMediaType.3.128.100.100.120 Integer 1}}
Please note that only the Required columns have been specified.
To delete the row from the table, setting the ipNetToMediaType to
2 will cause the row to be deleted, as per the setaction line in
the dynamic row template.
SA_setvar {{ipNetToMediaType.3.128.100.100.120 Integer 2}}
In the case of tables supporting the "RowStatus" columns, the
dynamic row templates created by the SimpleAgentPro will be
different. The %setaction line will not be necessary in that case,
since the SimpleAgentPro understands the semantics of the
different values of "RowStatus" like "destroy."
- How can I share one .var file among many devices, yet
have the correct values returned for tables such as the
ipAddrTable in MIB2 ?
Check the "Frequently Asked Questions" section in the built-in
help for the answer.
- What are the restrictions on the IP address that can
be assigned to the devices being simulated ?
The restrictions are different on different platforms.
On HPUX 10.1, the IP addresses assigned to the different
devices in a map have to be on the same subnet as the HP
workstation on which the SimpleAgentPro is running.
On Solaris 2.5.1, the IP addresses have no restrictions. Any IP
address, provided it is not already in use, can be assigned. If an
IP address on a different subnet is assigned, a route may be
needed to be added manually on the machine that is running the
management application, to tell it how to get to this subnet. The
IP address of the SUN workstation on which the SimpleAgentPro is
running can be used as the gateway address. The next question goes
into the specifics.
On Windows95/NT, the IP addresses have no restrictions either.
Any IP address, provided it is not already in use can be assigned.
If an IP address on a different subnet is assigned, a route may be
needed to be added manually on the machine that is running the
management application, to tell it how to get to this subnet. The
IP address of the SimpleAgentPro's UDP/IP stack can be used as a
gateway address. The next question goes into the specifics.
- How can my management application talk with the
simulated devices if they have IP addresses on a different subnet
?
Check the "Frequently Asked Questions" section in the built-in
help for the answer.
- How many devices can be in one map ?
Check the "Frequently Asked Questions" section in the built-in
help for the answer.
- Basic Troubleshooting on Windows NT
Following are some of the basic trouble shooting steps to get
the SimpleAgentPro up and running on a Windows NT system.
Providing answers to these questions when contacting Simplesoft
support, would help SimpleSoft support quickly resolve your
problems.
- What is the IP Address for the Microsoft TCP/IP stack. Lets
assume it is SubnetA.1
- What is the IP Address of the SimpleSoft UDP/IP stack. Lets
assume it is SubnetA.2 (Check if your UDP/IP stack address is on
the same subnet as the NT machine, but is DIFFERENT from the
Microsoft TCP/IP stack address, and is also not in use by some
else)
- After the stack is installed, and the machine rebooted, can
you in a DOS box on the Windows NT machine ping SubnetA.2 ie:
ping the UDP/IP stack. It should respond.
- If the above does not work, please let SimpleSoft know the
adapter card type in your PC, Windows NT vesion, and service
paks installed, and if you are running the stack in promiscuous
or directed mode.
- When the SimpleAgentPro is started, create a new map called
"abc", and add two devices to it with IP Addresses SubnetA.3 and
SubnetA.4 Use mib2.cmf and dev1.var (files that come with the
installation) for the compiled mib file and variable file for
both the devices.
- When you click on the Start button, the SimpleAgentPro
should display "Map started....." on the status window, and new
executable sathrd will get launched. Please check if all these
things happen.
- Go to the DOS console/box on the NT machine and ping the two
addresses SubnetA.3 and SubnetA.4. They should respond.
- Run another invocation of the SimpleAgentPro. Do not start
the map but this time go to the Variables->Learn from Device
submenu and specify an output file as junk.var, the teacher's IP
Address as SubnetA.3. Start the learn and see if the SNMP Agent
in the simulated device is responding.
- Look at the Map->Statistics menu to see if the simulated
device is indeed getting the requests.
- Also check if the SNMP service is currently running on the
NT box. If it is running, stop the service permanently and
reboot the machine and then try these steps once again.
- Basic Troubleshooting on Solaris
Following are some of the basic trouble shooting steps to get
the SimpleAgentPro up and running on a Solaris system. Providing
answers to these questions when contacting Simplesoft support,
would help SimpleSoft support quickly resolve your problems.
- What is the IP Address for the SUN Workstation Lets assume
it is SubnetA.1
- What is the interface name of the network card ? Run
ifconfig -a command and see what the second entry is called (the
one after lo0 (loopback) entry). It might be something like le0
or hme0
- Make sure the config.inp file in the sapro/bin directory has
a entry INTERFACE = hme0 if your interface name is hme0
- Make sure you are running as root on the local machine.
- When the SimpleAgentPro is started, create a new map called
"abc", and add two devices to it with IP Addresses SubnetA.3 and
SubnetA.4 Use mib2.cmf and dev1.var (files that come with the
installation) for the compiled mib file and variable file for
both the devices.
- When you click on the Start button, the SimpleAgentPro
should display "Map started....." on the status window, and new
executable sathrd will get launched. Please check if all these
things happen.
- Check if there are error messages in the shell where you
started the SimpleAgentPro. If there are error messages, check
if you have a snmp daemon process running that has bound to port
161. If you have a snmp daemon process running kill it. Also get
a valid license key from SimpleSoft if required.
- Go to the shell window on the Solaris machine and ping the
two addresses SubnetA.3 and SubnetA.4. They should respond.
- Run another invocation of the SimpleAgentPro. Do not start
the map but this time go to the Variables->Learn from Device
submenu and specify an output file as junk.var, the teacher's IP
Address as SubnetA.3. Start the learn and see if the SNMP Agent
in the simulated device is responding.
- Look at the Map->Statistics menu to see if the simulated
device is indeed getting the requests.
- What can I do if I do not want the users of
SimpleAgentPro to be root on Solaris ?
Check the "Frequently Asked Questions" section in the built-in
help for the answer.
- When I try to compile my MIBs, I get errors....
The MIB compiler provided by SimpleSoft is fairly stringent in
checking for syntax errors. This helps you make sure that the MIBs
provided by you to your customers are error free and will compile
with most third party mib compilers.
Typical MIB errors are different names, and data types for MIB
variables in the tableEntry declaration, versus actual columnar
definitions.
Example:
aNewDataType ::=OCTET STRING
tableEntry OBJECT-TYPE
SYNTAX TableEntryA
....
TableEntryB ::=
SEQUENCE {
column1
INTEGER,
column2
Counter,
....
}
....
columnA OBJECT-TYPE
SYNTAX INTEGER {
Up (1),
almost_down(2),
down(3)
}
...
column 2 OBJECT-TYPE
SYNTAX Gauge
...
The above Example contains 6 errors:
- User defined data types like "aNewDataType" should start
with a capital letter. The valid way would be "ANewDataType".
- The SYNTAX of table Entry is of type "TableEntryA", while
later on "TableEntryB" is defined instead of "TableEntryA". Make
sure that the strings match.
- The object descriptor "column1" is used in the definition of
the SEQUENCE for tableEntry, while the words "columnA" are used
in the column definition itself. Make sure that the object
descriptors are the same.
- One of the labels for the values in the enumerated integer
columnA starts with a upper case character ("Up(1)") The correct
way is "up"(1).
- One of the labels for the values in the enumerated integer
contains an underscore "_".("almost_down(2)") Underscore
characters are not allowed. A possible valid alternative would
be "almost-down(2)".
- The column2 is defined as a Counter in the SEQUENCE, but
defined as a GAUGE in the actual OBJECT TYPE definition.
Warnings from the MIB Compiler are suggestions for a better MIB
definition file, but dealing with them can be postponed, if
desired. You can also compile the MIBs in a lenient mode.
|
|
|