Roamabout perl script to poll local signal and level values from a Roamabout station v1.0

Introduction
------------
Roamabout is the name for wireless Access Points manufactured by Enterasys, former Cabletron. This 
technology allows ethernet connection from wireless clients as well as from other LANs. For more 
Information see www.enterasys.com.
To get signal and level values from a Roamabout station using SNMP, you first have to
set a test environment. This includes setting a remote station MAC address and an internal Roamabout 
polling interval. It is not possible to do this from a simple Target[] label in MRTG configuration 
files.
The information to use propietary SNMP with Roamabout is not published, although the 
propietary MIB is downloadable from www.enterasys.com. The information to make this script 
was inferred from this propietary MIB. The values obtained through SNMP were converted to 
Roamabout equivalent values following Enterasys support recommendations. This script was tested 
with the following Roamabout AP revision: HW=V2.2, RO=V1.7, SW=V6.02.07.

Disclaimer
------------
As stated above, the information on how to use SNMP to get signal and noise levels from a Roamabout 
station is not published. This script could be giving incorrect data, or could stop working in the 
future. There is no need to include legal crap here, but of course, use it at your own risk. 

Installation
------------
1. Copy the perl script to any place where MRTG could have access to execute it.
2. The script uses SNMP_Util, so if this package isn't alreade in your @INC, set the correct path to 
   this packge in the use lib statement in the script. 
3. Modify MRTG configuration files to use the script. A sample with non real values follows:

   ### Interface 2 >> Descr: 'Wireless, Port 2' | Name: '' | Ip: '' | Eth: '00-E0-63-82-A1-90' ###
   #rabtPTPLocalSignalLevel rabtPTPLocalNoiseLevel
   #
   # Script return values are negative, needs RRDTOOL
   Target[172.16.0.1_rabtPTPLocalLevel]: `roamabout.pl 172.16.0.1 00-E0-63-82-A1-90 RWCommString`
   SetEnv[172.16.0.1_rabtPTPLocalLevel]: MRTG_INT_IP="" MRTG_INT_DESCR="Wireless, Port 2"
   MaxBytes[172.16.0.1_rabtPTPLocalLevel]: 1
   Title[172.16.0.1_rabtPTPLocalLevel]: Wireless Signal & Noise
   PageTop[172.16.0.1_rabtPTPLocalLevel]: <H1>Wireless Signal & Noise</H1>
    <TABLE>
      <TR><TD>System:</TD>     <TD>Roamabout system</TD></TR>
      <TR><TD>Maintainer:</TD> <TD>NOC</TD></TR>
      <TR><TD>Description:</TD><TD>Wireless Signal & Noise </TD></TR>
    </TABLE>
   Options[172.16.0.1_rabtPTPLocalLevel]: gauge

   Pay attention to Options[]: gauge label and to the MaxBytes[] label. MRTG does not like MaxBytes=0
   so we put 1 instead. Real range is from -149 to 0, units are dBm.  
4. If you use MRTG without RRDTOOL (not recommended) or you want to skip point 5 and graph the values 
   with a 149 units displacement, you have to convert the values returned by the script to positive 
   numbers. Follow the comments on the script itself. Also, set Maxbytes to 149 instead of 1.
5. If you are using RRDTOOL, you have to warrant that the rrd files support negative numbers. Files 
   created by MRTG set the minimum value to 0, the maximum value to MaxBytes and the DS names to ds0 
   and ds1 (MRTG 2.9.17). To allow your data source to record negative values execute for each DS:
     rrdtool tune yourfile.rrd -i <ds-name>:-149 -a <ds_name>:0    
   For more information see RRDTOOL man pages.
   If you don't mind seeing the values with a 149 unists displacement, set the range from
   
Usage
-----
Typical usage is to run the script in the Target[] label of a MRTG configuration file. The script will 
output its usage if run without parameters as follows:

usage: roambout.pl <Roamabout IP address> <Remote station MAC address> <SNMP R/W community string> [sampling interval]

The format of these parameters is:

Roamabout IP address: 10.10.10.10
SNMP R/W community string: SNMPstring
Remote station MAC address: FF-FF-FF-FF-FF-FF (hexadecimals numbers with capital letters)
Sampling interval: 1-1000 (Better not to use this parameter and relay on the default value of 1)

The output is that expected by MRTG:
Line 1: Roamabout local noise level 
Line 2: Roamabout local signal level 
Line 3: string (in any human readable format), telling the uptime of the target. 
Line 4: string, telling the name of the target. 

Note that the SNMP community string needs to be R/W in order to set the remote station MAC address, and that 
the use of R/W SNMP community strings could be a security thread in some environments.
You may want to test the script before configuring MRTG. Using the same data as in the configuration sample 
above:

perl roamabout.pl 172.16.0.1 00-E0-63-82-A1-90 RWCommString

The output should be something like:
-96
-77
3 days, 12:58:55
172.16.0.1

Suggestions, bug reports, experiences, etc. are welcome.

Jorge Lodos Vigil, jorge.lodos@cigb.edu.cu, 2002/2/11