| README.solaris |
| $Id$ |
| |
| This document describes issues relating to compiling, |
| installing and using net-snmp on Solaris. |
| |
| 0. Introduction |
| 1. Things you will need |
| 2. Disabling Sun's SNMP daemons |
| 3. Compiling net-snmp |
| 4. Obtaining and installing binaries |
| 5. Creating snmpd.conf and testing |
| 6. Creating your own binaries |
| 7. Using Sun's SNMP daemon and net-snmp together |
| 8. Monitoring disks, processes and execs (DISMAN-EVENT-MIB) |
| 9. Monitoring CPU temp, fan and power supply sensors (LM-SENSORS-MIB) |
| |
| Additional compilation issues: |
| |
| 10. Files descriptors and fopen |
| 11. Perl |
| 12. sed and $PATH |
| 13. OpenSSL |
| 14. Wish list |
| |
| Other issues: |
| |
| 15. Known Bugs!! |
| 16. Discussion and further information |
| |
| ------------------------------------------------------------ |
| 0. Introducion |
| |
| This document is a compilation of information relating to |
| running net-snmp (www.net-snmp.org) on Sun SPARC and ULTRA |
| hardware under the Solaris operating system. |
| |
| This can be done either in conjunction with or as a |
| replacement for Sun's SNMP daemons. |
| |
| This is discussed in detail in the sections below. Since |
| this is the work of several authors, credit is given. |
| Discussion, however, should take place on the net-snmp-users |
| or net-snmp-coders mailing lists so everybody can |
| benefit. See http://sourceforge.net/mail/?group_id=12694 . |
| Use "net-snmp-users" for general usage questions and "net-snmp-coders" for |
| discussion of net-snmp source code. |
| |
| No warranty is implied by this document. |
| This document is copyright but usage allowed under the same |
| licensing as net-snmp in general. See http://www.net-snmp.org/COPYING.txt. |
| ------------------------------------------------------------ |
| 1. Things you will need |
| |
| A. Root access |
| |
| Root access is required to follow pretty much any of |
| the steps below. At a bare minimum, you will need |
| to be able to start and stop daemons, which requires root. |
| |
| B. Determine existing SNMP functionality |
| |
| SNMP uses ports 161 and 162 by default. Only one application |
| can use them at a time. If there is an existing SNMP |
| application (eg. Sun's snmpdx daemon) you need to either |
| turn this off or work around it. You may also have |
| a previous version of net-snmp, the older ucd-snmp, or |
| something completely different. The following commands: |
| |
| ps -ef | grep snm |
| ps -ef | grep mibi |
| |
| will give you a fairly good idea what is going on. |
| |
| If you see something like: |
| |
| root 643 1 0 Jan 16 ? 5:49 /usr/local/sbin/snmpd |
| |
| that's probably a version of net-snmp. The instructions in various |
| sections below should give you clues on what to do next. |
| |
| If you see something like: |
| |
| root 16178 1 0 13:16:04 pts/2 0:00 /usr/lib/snmp/snmpdx -y -c /etc/snmp/conf |
| |
| and/or |
| |
| root 21371 1 0 Feb 07 ? 0:52 mibiisa -r -p 41178 |
| |
| then Sun's SNMP daemons are running. |
| |
| If you need this, for example if you use the Solstice Enterprise |
| Agent, you may wish to run net-snmp as a sub-agent (see section 7). |
| Otherwise, you will need to disable Sun's daemons (see section 2). |
| |
| Regardless you may wish to compile net-snmp from source |
| and install it (see sections 3, 5 and 6) or install |
| binaries (see sections 4 and 5). |
| |
| If some other SNMP daemon is running, you will need to determine |
| where it came from and what it's being used for. You get clues by |
| typing "snmpd -v" or "snmpd --help". In some cases it may be |
| a subagent or agent from another application, such as ORACLE. If |
| you disable its agent, you will need to re-create this functionality |
| under net-snmp (eg. by running it as a sub-agent). ORACLE's SNMP |
| functionality is turned on by default and may be unnecessary if |
| you aren't using ORACLE's Enterprise Manager. Refer to ORACLE's |
| documentation on how to disable it. |
| |
| C. gnu tar |
| |
| At present the application will not untar properly using Sun's tar. |
| The problem may be related to path length. A working tar |
| is available at www.sunfreeware.com. |
| |
| If you have decided to compile your own net-snmp, you will need ... |
| |
| D. A compilation environment |
| |
| -a compiler (gcc or Sun's Forte cc) or the gcc libraries |
| (note, the cc in /usr/ucb is NOT a full-blown compiler) |
| -OpenSSL (sunfreeware.com or source www.openssl.org) |
| -zlib (sunfreeware.com or source www.gzip.org/zlib/) |
| -an SNMP community string ("public" is deprecated) |
| |
| If you are installing on a development machine, it may be best |
| to compile openssl and zlib from source, otherwise |
| obtain the appropriate zlib for your platform from sunfreeware |
| and install (it goes to /usr/local automatically). |
| Obtain the appropriate openssl for your platform from sunfreeware |
| and install (it goes to /usr/local), you may need the gcc libraries. |
| These libraries should not need to be installed if you are using |
| binaries, but your mileage may vary. Note the library problem |
| with libcrypto noted below (section 11). |
| |
| There are two choices for compilers. Sun has a Forte development |
| suite that includes a standalone C compiler. If you have it, it |
| is likely installed in /opt/SUNWspro/bin. |
| |
| The more common choice is gcc (currently 2.95.3 or 3.4) |
| available from sunfreeware.com. If you install gcc, you do not |
| need the gcc libraries. 3.3.2 or later is recommended. |
| |
| Given that net-snmp is developed to work on a wide variety of |
| platforms, but especially for linux, there's a better chance of |
| it working using gcc at any given time. Hence, gcc may |
| simply be the better choice regardless of whether you have |
| another compiler. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 2. Disabling Sun's SNMP daemons |
| |
| Note: Sun has included net-snmp with Solaris 10. These |
| instructions are written with Solaris 8 and previous in mind. |
| |
| Out of the box, Sun runs four SNMP daemons; mibiisa, idmispd, |
| xnmpXdmid and snmpdx. |
| |
| These must be disabled before running net-snmp unless you are planning |
| on running them together (see Section 7 below). Here is the procedure: |
| |
| cd /etc/rc3.d |
| ./S76snmpdx stop |
| ./S77dmi stop |
| mv S76snmpdx s76snmpdx |
| mv S77dmi s77dmi |
| |
| If you are using Solstice Disksuite, you may also be running |
| mdlogd. Leave this alone. |
| |
| You will need to create a new script to start net-snmp. |
| |
| Here's an example: |
| |
| ::::: /etc/rc3.d/S78net-snmp :::::: |
| |
| #!/sbin/sh |
| # |
| # /etc/rc3.d/S78net-snmp |
| # |
| # pkill has moved over the years so we need to find it |
| # |
| X=`which pkill` |
| |
| case "$1" in |
| 'start') |
| /usr/local/sbin/snmpd |
| ;; |
| |
| 'stop') |
| $X -TERM -x -u 0 snmpd |
| ;; |
| |
| *) |
| echo "Usage: $0 { start | stop }" |
| exit 1 |
| ;; |
| esac |
| exit 0 |
| :::::::::::::::::::::::::::::::::::: |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 3. Compiling net-snmp |
| |
| It is strongly recommended that you compile net-snmp from source. |
| That way you are guaranteed a working version for your specific |
| configuration of operating system, applications and libraries. |
| |
| If, for some reason, you cannot compile on a specific machine, |
| there are binaries available for download (see section 4). |
| In addition, you may create your own binaries (see section 6). |
| |
| You need to set your $PATH. This is extremely important |
| because otherwise there may be conflicts between the various |
| components of the development environment. |
| |
| If you are using FORTE: |
| |
| PATH=/usr/bin:/usr/sbin:/usr/ccs/bin/:opt/SUNWspro/bin:/usr/local/bin: |
| |
| If you are using gcc: |
| |
| PATH=/usr/sbin:/usr/local/bin:/usr/ccs/bin:/usr/bin |
| |
| Obtain a current version of net-snmp (which, if you're reading this, |
| presumably you have - don't you love recursion?) www.net-snmp.org/download/ |
| |
| Uncompress it and untar it in a working directory eg. /usr/local/src/net-snmp |
| |
| Note: Sun's tar (/usr/bin/tar) may have problem with long directory |
| paths. You may need to install gnu tar available from www.sunfreeware.com. |
| |
| In order to save a lot of typing, you should create a "configure" |
| script eg. bcc.sh in the directory below eg. /usr/local/src. |
| |
| ./configure --with-mib-modules="host disman/event-mib ucd-snmp/diskio \ |
| smux agentx mibII/mta_sendmail" --with-cc=gcc |
| |
| (note, see the long discussion about Perl below) |
| (note, subtitute "cc" for "gcc" as appropriate) |
| (note, if you wish to use the new LM-SENSORS-MIB component, see |
| discussion below) |
| |
| then call this script from the net-snmp directory ie ../bcc.sh |
| |
| and answer the appropriate questions (usually with the default). |
| |
| When it completes, you should see something like: |
| |
| --------------------------------------------------------- |
| Net-SNMP configuration summary: |
| --------------------------------------------------------- |
| |
| Net-SNMP Version: 5.2 |
| Building for: solaris2 |
| Network transport support: Callback Unix TCP UDP |
| SNMPv3 Security Modules: usm |
| Agent MIB code: mibII ucd_snmp snmpv3mibs notification target |
| \agent_mibs agentx agent_mibs utilities host disman/event-mib |
| \ucd-snmp/diskio smux agentx mibII/mta_sendmail |
| SNMP Perl modules: disabled |
| Embedded perl support: disabled |
| Authentication support: MD5 SHA1 |
| Encryption support: DES |
| |
| Type: |
| |
| make |
| |
| and watch for compile errors. |
| |
| You will receive numerous warnings. This is normal, |
| a side effect of supporting a variety of development environments. |
| |
| Now type: |
| |
| make test |
| |
| and watch for failures. Also watch for the special tests for Solaris. |
| |
| If you are satisfied with the tests, stop any snmpd daemons |
| that may be running (see section 2) and type: |
| |
| make install |
| |
| When complete, go on to section 5 below. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 4. Obtaining and installing binaries |
| |
| It is strongly recommended that you compile net-snmp from source. |
| That way you are guaranteed a working version for your specific |
| configuration of operating system, applications and libraries. |
| |
| Binaries for Solaris may be found in two locations. |
| |
| www.sunfreeware.com - this installs as a package. |
| It does not have Perl support. |
| |
| Therefore, I recommend: |
| |
| http://net-snmp.sourceforge.net/download/ (you will be redirected) |
| |
| This is the official repository for binaries. |
| |
| To determine which binary you need, you will need several pieces of |
| information. |
| |
| -operating system version, |
| -hardware platform |
| -net-snmp version desired |
| |
| The first two may be obtained by typing: |
| |
| uname -a |
| |
| It will return something like: |
| |
| SunOS foo 5.8 Generic_108528-14 sun4u sparc SUNW,Ultra-4 |
| |
| 5.8 means Solaris 8 |
| 5.7 means Solaris 7 etc. |
| |
| "sun4u" is the Ultra hardware platform |
| "sun4m" is SuperSPARC eg. Sparc 5 or Sparc 10 |
| "sun4d" is older SPARC boxes. |
| |
| You can then decode the binary version by its name eg.: |
| |
| net-snmp_5.0.9-SunOS_5.8_sun4u.tar.gz |
| |
| means "net-snmp version 5.0.9 for Solaris version 5.8 running on Ultra |
| hardware". |
| |
| Once you have found the appropriate version, download it to a |
| distribution directory (making one if necessary) eg. /usr/local/dist |
| |
| Type the following: (using the sample above) |
| |
| cd / |
| tar -xvf /usr/local/dist/net-snmp-5.0.9-SunOS_5.8_sun4u.tar |
| |
| The binaries, libraries, etc. will be installed in /usr/local. |
| |
| There may be a problem with Sun's tar. See discussion above. |
| |
| Remove the tar file to save space. Create an snmpd.conf (see below) |
| or use an existing one from another machine. |
| It installs in /usr/local/share/snmp. |
| |
| Install a startup script (see section 1). |
| |
| For further information, see README.solaris.binaries.x |
| |
| --Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 5. Creating snmpd.conf and testing |
| |
| When everything is installed, run: |
| |
| snmpconf -g basic_setup |
| |
| and answer the questions appropriately. If you are using |
| the defaults, place the resulting snmpd.conf file in: |
| |
| /usr/local/share/snmp/snmpd.conf |
| |
| A security note - use of the "public" community is deprecated. |
| This example uses "whatever" as a community. |
| |
| When you have the daemon running either with the script above or running: |
| |
| /usr/local/sbin/snmpd |
| |
| test the daemon's functionality by typing: |
| |
| snmpget -v 1 -c whatever localhost sysUpTime.0 |
| snmpwalk -v 2c -c whatever -m ALL localhost .1.3 | more |
| |
| and paging through the results. |
| |
| If you have problems, you can examine diagnostic messages |
| by running: |
| |
| /usr/local/sbin/snmpd -f -L |
| |
| or use gdb (available from www.sunsolve.com) as follows: |
| |
| cd /usr/local/sbin |
| gdb snmpd |
| run -f -L |
| |
| and when it blows up: |
| |
| bt |
| |
| to get the backtrace. |
| |
| You can use: |
| |
| run -f -L -D <modulename> |
| |
| to display debug messages. |
| |
| To display all debug messages type: |
| |
| run -f -L -D ALL |
| |
| but this will be extremely verbose. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> with suggestions by Thushara Wickram |
| |
| ------------------------------------------------------------ |
| 6. Creating your own binaries |
| |
| Pick an appropriate name for a tarfile |
| eg. net-snmp-5.2.custom-SunOS_5.8_sun4u.tar (see above) |
| (this particular one means "a customized version of |
| net-snmp 5.2 that works under Solaris 8 running on Ultra hardware") |
| |
| Create an empty directory such as /usr/local/dist, then do the following |
| from the source directory (using the example above): |
| |
| make install prefix=/usr/local/dist/usr/local \ |
| exec_prefix=/usr/local/dist/usr/local |
| cd /usr/local/dist |
| tar -cvf net-snmp-5.2.custom-SunOS_5.8_sun4u.tar usr |
| |
| Transfer this file to the machine where you want to install from binary. |
| Place it in a distribution directory eg. /usr/local/dist |
| Type the following (using the example above): |
| |
| cd / |
| tar -xvf /usr/local/dist/net-snmp-5.1.custom-SunOS_5.8_sun4u.tar |
| |
| Remove the tar file to save space. Create an snmpd.conf (see above) |
| or use an existing one from another machine. If you are using |
| the defaults, it installs in /usr/local/share/snmp. Install |
| a startup script (see section 2). |
| |
| Note that if you create a binary with Perl support (see below) an |
| identically configured Perl needs to be installed as well. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 7. Using Sun's SNMP daemon and net-snmp together |
| |
| Net-snmp may be used as a sub-agent in conjunction with Sun's snmpdx daemon. |
| |
| To do this, you will need to modify several files, |
| all located in /etc/snmp/conf. |
| |
| First, do the following: |
| |
| /etc/rc3.d/S76snmpdx stop (assuming you haven't done so already, and...) |
| /etc/rc3.d/S77dmi stop (...assuming you haven't renamed them) |
| |
| cd /etc/snmp/conf |
| cp snmpd.conf snmpd.conf.orig |
| cp snmpdx.acl snmpdx.acl.orig |
| cp snmpdx.reg snmpdx.reg.orig |
| cp snmpdx.rsrc snmpdx.rsrc.orig |
| cp mibiisa.reg mibiisa.reg.orig |
| cp mibiisa.rsrc mibiisa.rsrc.orig |
| |
| modify snmpd.conf with the correct: |
| |
| sysdescr |
| syscontact |
| sysLocation |
| system-group-read-community |
| read-community (in my example below I will use community "whatever") |
| trap |
| trap-community |
| managers (leave blank for all) |
| |
| modify snmpd.acl with the correct: |
| |
| trap-community |
| trap-recipients |
| communities |
| access |
| |
| Make sure that in snmpdx.reg the port is 161. |
| |
| You will now need to add two files - net-snmp.reg and net-snmp.rscs |
| |
| In this example, "subtrees" is set for HOST-RESOURCES-MIB, and UCD-SNMP-MIB. |
| Do not use net-snmp's MIB-2 information as this is already provided by |
| Sun's mib and may cause a conflict. |
| |
| ::::: net-snmp.reg :::::: |
| |
| # net-snmp.reg |
| # mib-2 is already provided by the mibiisa process |
| # that is a default sub agent of snmpdx |
| # we are specifying only hostmib and ucd |
| ########## |
| # agents # |
| ########## |
| |
| agents = |
| { |
| { |
| name = "net-snmp" |
| subtrees = { 1.3.6.1.2.1.25,1.3.6.1.4.1.2021 } # hostmib, ucd |
| timeout = 2000000 |
| watch-dog-time = 86400 |
| } |
| } |
| |
| :::::::::::::::::: |
| |
| ::::: net-snmp.rscs :::::: |
| |
| # /etc/snmp/conf/net-snmp.rsrc |
| |
| resource = |
| { |
| { |
| registration_file = "/etc/snmp/conf/net-snmp.reg" |
| policy = "spawn" |
| type = "legacy" |
| command = "/usr/local/sbin/snmpd $PORT" |
| } |
| |
| } |
| |
| :::::::::::::::::: |
| |
| Stop any net-snmp processes that may be running. |
| |
| Start Sun's daemons by typing: |
| |
| /etc/rc3.d/S76snmpdx start (assuming you haven't renamed it) |
| /etc/rc3.d/S77dmi start (assuming you haven't renamed it) |
| |
| Wait a moment for everything to stabilize, then try these two queries: |
| |
| snmpget -v 1 -c whatever localhost sysDescr.0 |
| snmpget -v 1 -c whatever localhost hrSystemUptime.0 |
| |
| You should see something like: |
| |
| SNMPv2-MIB::sysDescr.0 = STRING: SunOS foo 5.6 Generic_105181-30 sun4u |
| |
| which is Sun's daemon talking, and: |
| |
| HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (78540910) 9 days, 2:10:09.10 |
| |
| which is net-snmp talking. It is acting as a sub-agent through Sun's daemon. |
| |
| If Sun's daemons fail, you will need to shut down the snmpd daemons by typing: |
| |
| pkill snmpd |
| |
| Then do the following: |
| |
| /etc/rc3.d/S76snmpdx stop (assuming you haven't renamed it) |
| /etc/rc3.d/S77dmi stop (assuming you haven't renamed it) |
| /etc/rc3.d/S76snmpdx start (assuming you haven't renamed it) |
| /etc/rc3.d/S77dmi start (assuming you haven't renamed it) |
| |
| rather than trying to individually clobber all the various Sun daemons. |
| |
| This configuration appears to deal properly with snmpgets |
| and handle mistakes gracefully. |
| |
| Beyond this, your mileage may vary. |
| |
| You may wish to modify the subtrees in net-snmp.reg as you find things |
| that do and don't work. Remember to keep backup copies of working |
| configurations. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> from notes by Stefan Radman and C Wells |
| ------------------------------------------------------------ |
| 8. Monitoring disks, processes and execs (DISMAN-EVENT-MIB) |
| |
| For a full explanation of using DISMAN-EVENT-MIB, see: |
| |
| http://www.net-snmp.org/man/snmpd.conf.html |
| |
| To use this compoenent, net-snmp must be compiled with the option.. |
| |
| --with-mib-modules="disman/event-mib" |
| |
| This discussion concerns the use of DISMAN-EVENT-MIB with Solaris. |
| |
| There is a bug preventing the use of some of its functionality. This |
| discussion will document what is known to work and how to use it. |
| |
| The problem revolves around the use of monitors. The... |
| |
| defaultMonitors yes |
| |
| token will NOT work for reasons discussed below. I suspect that the |
| notificationEvent tokens will not work for the same reason but this |
| has not been tested. Your mileage may vary. Same with includeAllDisks. |
| |
| The documentation suggests using... |
| |
| monitor -o prNames -o prErrMessage "process table" prErrorFlag != 0 |
| |
| to monitor all processes. This will fail with ambiguous results. |
| |
| To monitor processes, put a separate monitor line for each process. |
| |
| For example: |
| ###### |
| proc smail |
| proc mdlogd |
| |
| monitor -r 30 -i -o prNames.1 -o prErrMessage.1 "Process smail" prErrorFlag.1 !=0 |
| monitor -r 30 -i -o prNames.2 -o prErrMessage.2 "Process Solstice Disksuite SNMP trap" prErrorFlag.2 !=0 |
| |
| To monitor disks, do the same. An example: |
| |
| ######## |
| # This example sends a trap if root has less than 10% available and /usr6 less t |
| han 90% |
| # |
| disk / 10% |
| disk /usr6 90% |
| |
| monitor -i -r 30 -o dskPath.1 -o dskErrorMsg.1 "root file system" dskErrorFlag.1 !=0 |
| monitor -i -r 30 -o dskPath.2 -o dskErrorMsg.2 "ORACLE file system" dskErrorFlag.2 != 0 |
| ######### |
| |
| To implement an external program then monitor its results you need to set up your script. |
| |
| Here is a sample script. |
| |
| #!//usr/bin/ksh |
| xstatus=0 |
| |
| if [ $xstatus -eq 0 ];then |
| echo success: $0 |
| else |
| echo FAILURE: $0 |
| fi |
| |
| exit $xstatus |
| ###end of script tester## |
| |
| Place this script in /usr/local/src and make it executable. Make copies called |
| tester1, tester2 etc. |
| and make them executable. |
| |
| Here is a sample snmpd.conf snippet that makes use of the exec feature: |
| ############## |
| |
| exec tester1 /usr/local/src/tester1 |
| exec tester2 /usr/local/src/tester2 |
| exec tester3 /usr/local/src/tester3 |
| exec tester4 /usr/local/src/tester4 |
| exec tester5 /usr/local/src/tester5 |
| |
| monitor -i -r 60 -o extNames.1 -o extOutput.1 "status table 1" extResult.1 != 0 |
| monitor -i -r 60 -o extNames.2 -o extOutput.2 "status table 2" extResult.2 != 0 |
| monitor -i -r 60 -o extNames.3 -o extOutput.3 "status table 3" extResult.3 != 0 |
| monitor -i -r 60 -o extNames.4 -o extOutput.4 "status table 4" extResult.4 != 0 |
| monitor -i -r 60 -o extNames.5 -o extOutput.5 "status table 5" extResult.5 != 0 |
| ############## |
| |
| While snmpd is running, go to /usr/local/src and modify one of the tester programs eg. tester1 |
| |
| xstatus=1 |
| |
| and save the file. Sometime in the next 60 seconds, a trap will be generated. |
| Change the value |
| back to 0, then modify another file. |
| |
| If you are unsure of the correct row number within a specific table, do an snmpwalk eg. |
| |
| snmpwalk -v 2c -c public -m ALL localhost prNames |
| |
| The same methodology can presumably be used for fileName and laNames. Your mileage may vary. |
| |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> with Allan McIntosh and Wes Hardaker |
| ------------------------------------------------------------ |
| 9. Monitoring CPU temp, fan and power supply sensors (LM-SENSORS-MIB) |
| |
| ********************************************************************************* |
| |
| NOTE!! This is a new and experimental module. It should be considered "alpha" |
| for this first release. Use with caution as its impact on machine performance |
| (ie. CPU usage) has yet to be determined. The module works in "read only" |
| mode to examine sensors. It cannot change switch or fan settings. |
| |
| It has been tested on the following platforms: |
| |
| Enterprise 450 |
| V880 |
| 280R |
| |
| If you have information about other platforms this is desperately needed. For |
| example, the only "state" that I'm aware of for an i2c is "OK". The more |
| information we have, the richer the components. |
| |
| Please report any performance statistics, bugs or omissions to the users list. |
| Please report any code suggestions to the coders list. See links below. |
| |
| ********************************************************************************** |
| |
| This component delivers information that you would normally see by typing: |
| |
| /usr/platform/`uname -m`/sbin/prtdiag -v |
| |
| At present this is only supported on the Ultra (sun4u) platform. |
| |
| To display this information, net-snmp must be compiled with the option: |
| |
| --with-mib-modules="ucd-snmp/lmSensors" |
| |
| Early Ultra servers such as the Ultra 1 or Ultra 2 did not report |
| any sensor information at all. Later servers, such as the Enterprise 450 |
| reported this information using kstat. Sun's latest servers make use |
| of the picld daemon to control system resources and report fan information. This |
| module reads in the information from picld. It cannot modify settings. |
| |
| You can see this information by typing: |
| |
| prtpicl -v | more |
| |
| The following is typical output: |
| |
| E450# snmpwalk -v 2c -c public -m ALL localhost lmSensors |
| LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 3 |
| LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: Ambient |
| LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: CPU1 |
| LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: CPU2 |
| LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: CPU3 |
| LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 22 |
| LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 45 |
| LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 46 |
| LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 49 |
| LM-SENSORS-MIB::lmFanSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmFanSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmFanSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmFanSensorsDevice.1 = STRING: fan type CPU number 0 |
| LM-SENSORS-MIB::lmFanSensorsDevice.2 = STRING: fan type PWR number 0 |
| LM-SENSORS-MIB::lmFanSensorsDevice.3 = STRING: fan type AFB number 0 |
| LM-SENSORS-MIB::lmFanSensorsValue.1 = Gauge32: 33 |
| LM-SENSORS-MIB::lmFanSensorsValue.2 = Gauge32: 31 |
| LM-SENSORS-MIB::lmFanSensorsValue.3 = Gauge32: 63 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmVoltSensorsDevice.1 = STRING: power supply 0 |
| LM-SENSORS-MIB::lmVoltSensorsDevice.2 = STRING: power supply 1 |
| LM-SENSORS-MIB::lmVoltSensorsDevice.3 = STRING: power supply 2 |
| LM-SENSORS-MIB::lmVoltSensorsValue.1 = Gauge32: 38 |
| LM-SENSORS-MIB::lmVoltSensorsValue.2 = Gauge32: 39 |
| LM-SENSORS-MIB::lmVoltSensorsValue.3 = Gauge32: 39 |
| LM-SENSORS-MIB::lmMiscSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmMiscSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmMiscSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmMiscSensorsDevice.1 = STRING: FSP |
| LM-SENSORS-MIB::lmMiscSensorsDevice.2 = STRING: Backplane4 |
| LM-SENSORS-MIB::lmMiscSensorsDevice.3 = STRING: Backplane8 |
| LM-SENSORS-MIB::lmMiscSensorsValue.1 = Gauge32: 192 |
| LM-SENSORS-MIB::lmMiscSensorsValue.2 = Gauge32: 0 |
| LM-SENSORS-MIB::lmMiscSensorsValue.3 = Gauge32: 0 |
| |
| V880# snmpwalk -v 2c -c public -m ALL localhost lmSensors |
| LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmTempSensorsIndex.4 = INTEGER: 3 |
| LM-SENSORS-MIB::lmTempSensorsIndex.5 = INTEGER: 4 |
| LM-SENSORS-MIB::lmTempSensorsIndex.6 = INTEGER: 5 |
| LM-SENSORS-MIB::lmTempSensorsIndex.7 = INTEGER: 6 |
| LM-SENSORS-MIB::lmTempSensorsIndex.8 = INTEGER: 7 |
| LM-SENSORS-MIB::lmTempSensorsIndex.9 = INTEGER: 8 |
| LM-SENSORS-MIB::lmTempSensorsIndex.10 = INTEGER: 9 |
| LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: CPU0_DIE_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: CPU2_DIE_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: CPU1_DIE_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.4 = STRING: CPU3_DIE_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.5 = STRING: CPU4_DIE_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.6 = STRING: CPU6_DIE_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.7 = STRING: MB_AMB_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.8 = STRING: IOB_AMB_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.9 = STRING: DBP0_AMB_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsDevice.10 = STRING: DBP1_AMB_TEMPERATURE_SENSOR |
| LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 71 |
| LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 60 |
| LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 66 |
| LM-SENSORS-MIB::lmTempSensorsValue.4 = Gauge32: 59 |
| LM-SENSORS-MIB::lmTempSensorsValue.5 = Gauge32: 65 |
| LM-SENSORS-MIB::lmTempSensorsValue.6 = Gauge32: 69 |
| LM-SENSORS-MIB::lmTempSensorsValue.7 = Gauge32: 28 |
| LM-SENSORS-MIB::lmTempSensorsValue.8 = Gauge32: 25 |
| LM-SENSORS-MIB::lmTempSensorsValue.9 = Gauge32: 25 |
| LM-SENSORS-MIB::lmTempSensorsValue.10 = Gauge32: 24 |
| LM-SENSORS-MIB::lmFanSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmFanSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmFanSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmFanSensorsIndex.4 = INTEGER: 3 |
| LM-SENSORS-MIB::lmFanSensorsIndex.5 = INTEGER: 4 |
| LM-SENSORS-MIB::lmFanSensorsIndex.6 = INTEGER: 5 |
| LM-SENSORS-MIB::lmFanSensorsIndex.7 = INTEGER: 6 |
| LM-SENSORS-MIB::lmFanSensorsIndex.8 = INTEGER: 7 |
| LM-SENSORS-MIB::lmFanSensorsIndex.9 = INTEGER: 8 |
| LM-SENSORS-MIB::lmFanSensorsIndex.10 = INTEGER: 9 |
| LM-SENSORS-MIB::lmFanSensorsDevice.1 = STRING: CPU0_PFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.2 = STRING: CPU1_PFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.3 = STRING: CPU0_SFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.4 = STRING: CPU1_SFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.5 = STRING: IO_BRIDGE_PFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.6 = STRING: IO_BRIDGE_SFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.7 = STRING: IO0_PFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.8 = STRING: IO1_PFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.9 = STRING: IO0_SFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsDevice.10 = STRING: IO1_SFAN_TACH |
| LM-SENSORS-MIB::lmFanSensorsValue.1 = Gauge32: 2439 |
| LM-SENSORS-MIB::lmFanSensorsValue.2 = Gauge32: 2586 |
| LM-SENSORS-MIB::lmFanSensorsValue.3 = Gauge32: 2459 |
| LM-SENSORS-MIB::lmFanSensorsValue.4 = Gauge32: 2564 |
| LM-SENSORS-MIB::lmFanSensorsValue.5 = Gauge32: 3409 |
| LM-SENSORS-MIB::lmFanSensorsValue.6 = Gauge32: 0 |
| LM-SENSORS-MIB::lmFanSensorsValue.7 = Gauge32: 3947 |
| LM-SENSORS-MIB::lmFanSensorsValue.8 = Gauge32: 3896 |
| LM-SENSORS-MIB::lmFanSensorsValue.9 = Gauge32: 4000 |
| LM-SENSORS-MIB::lmFanSensorsValue.10 = Gauge32: 3896 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.1 = INTEGER: 0 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.2 = INTEGER: 1 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.3 = INTEGER: 2 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.4 = INTEGER: 3 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.5 = INTEGER: 4 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.6 = INTEGER: 5 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.7 = INTEGER: 6 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.8 = INTEGER: 7 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.9 = INTEGER: 8 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.10 = INTEGER: 9 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.11 = INTEGER: 10 |
| LM-SENSORS-MIB::lmVoltSensorsIndex.12 = INTEGER: 11 |
| LM-SENSORS-MIB::lmVoltSensorsDevice.1 = STRING: PS0_3_3V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.2 = STRING: PS0_5V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.3 = STRING: PS0_12V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.4 = STRING: PS0_48V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.5 = STRING: PS1_3_3V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.6 = STRING: PS1_5V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.7 = STRING: PS1_12V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.8 = STRING: PS1_48V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.9 = STRING: PS2_3_3V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.10 = STRING: PS2_5V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.11 = STRING: PS2_12V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsDevice.12 = STRING: PS2_48V_I_SENSOR |
| LM-SENSORS-MIB::lmVoltSensorsValue.1 = Gauge32: 6 |
| LM-SENSORS-MIB::lmVoltSensorsValue.2 = Gauge32: 4 |
| LM-SENSORS-MIB::lmVoltSensorsValue.3 = Gauge32: 3 |
| LM-SENSORS-MIB::lmVoltSensorsValue.4 = Gauge32: 4 |
| LM-SENSORS-MIB::lmVoltSensorsValue.5 = Gauge32: 6 |
| LM-SENSORS-MIB::lmVoltSensorsValue.6 = Gauge32: 4 |
| LM-SENSORS-MIB::lmVoltSensorsValue.7 = Gauge32: 3 |
| LM-SENSORS-MIB::lmVoltSensorsValue.8 = Gauge32: 4 |
| LM-SENSORS-MIB::lmVoltSensorsValue.9 = Gauge32: 6 |
| LM-SENSORS-MIB::lmVoltSensorsValue.10 = Gauge32: 4 |
| LM-SENSORS-MIB::lmVoltSensorsValue.11 = Gauge32: 3 |
| LM-SENSORS-MIB::lmVoltSensorsValue.12 = Gauge32: 4 |
| |
| This component also reports information for switches, LEDs |
| and i2c's (devices accessing the i2c bus). |
| Because the MIB only allows us to display numeric |
| information a certain amount of translation has been done. |
| |
| Switches: |
| |
| 0 = OFF |
| 1 = ON |
| 2 = NORMAL |
| 3 = LOCKED |
| 4 = UNKNOWN |
| 5 = DIAG |
| 6 = SECURE |
| 99 = other |
| |
| LEDs: |
| |
| 0 = OFF |
| 1 = ON |
| 2 = BLINK (this may not exist) |
| 99 = other |
| |
| i2c's: |
| 0 = OK |
| 99 = other |
| |
| In order to prevent inordinant consumption of machine resources, |
| some sensor information is cached. Currently, information |
| retrieved from picld is cached for six seconds. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| ------------------------------------------------------------ |
| 10. Files descriptors and fopen |
| |
| Solaris has a limitation on the number of file descriptors (255) |
| available in stdio, so that fopen() fails if more than |
| 255 file descriptors (sockets) are open. This prevents mibs from |
| being loaded after 250 sockets are open, since parse.c uses stdio. |
| |
| SEan <burke_sp@pacbell.net> investigated this problem, and had this |
| report on using the SFIO package to solve this problem. |
| |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| |
| The SFIO package ( http://www.research.att.com/sw/tools/sfio/ ) |
| is a buffered streams IO package that is much more more sophisticated |
| than stdio, but it does support stdio API's for backward compatibility, |
| and that's the aspect that is important here. |
| |
| To compile with SFIO, we simply add -I/usr/local/sfio/include to the |
| $CPPFLAGS before compiling net-snmp. This causes SFIO's stdio.h to |
| preempt Solaris stdio, mapping calls like fopen() and fprintf() to |
| the SFIO implementations. This produces a libnetsnmp that does not |
| have the fopen() limitation. Any application that links to this |
| libnetsnmp must also be linked to libsfio. |
| |
| Here are the two caveats: |
| |
| A. libsfio exports the functions 'getc' and 'putc', for reasons that |
| are not clear. These are the only symbols it exports that conflict |
| with stdio. While getc and putc are traditionally macros, Solaris |
| makes them functions in multithreaded code (compiled with -mt, |
| -pthread, or -D_REENTRANT). If your native stdio code links to the |
| libsfio versions, a crash will result. |
| |
| There are two solutions to this problem. You may remove getc and putc |
| from libsfio, since SFIO defines getc and putc as macros, by doing: |
| |
| ar d libsfio.a getc.o |
| ar d libsfio.a putc.o |
| |
| or link to SFIO's stdio compatibility library, libstdio, ahead of |
| libsfio. This library wraps all of the native stdio calls with |
| versions that are safe for native or sfio streams, in case you |
| need to share streams between SFIO and native stdio codes. |
| |
| B. libsfio provides 64-bit offsets in fseek(), ftell(). This is |
| a good thing, since SFIO is intened to avoid needless limitations, |
| but it means that SFIO's stdio.h defines off_t to be a 64-bit offset. |
| Net-SNMP uses readdir(), which returns a struct dirent containing |
| a 32-bit off_t, so the code compiled for SFIO doesn't access |
| struct dirent's correctly. |
| |
| There are two solutions to this problem, as well. The first is to |
| include <dirent.h> at the start of SFIO's stdio.h. Since SFIO |
| defines a macro substitution for off_t, this leaves struct dirent's |
| definition unchanged. |
| |
| An alternative, which I haven't verified, is to define _FILE_OFFSET_BITS |
| to be 64 when compiling libnetsnmp. According to what I see in Solaris's |
| /usr/include/sys/feature_tests.h, you can select a 64-bit off_t at |
| compile time with this setting, which should make readdir()'s off_t |
| compatible with SFIO's ftell(), fseek(). |
| [[ We have received reports that this approach does not in fact work |
| (see Perl discussion below)]] |
| |
| Finally, thanks to Phong Vo and AT&T Labs for a fast, robust and |
| portable package that solves this headache very neatly. |
| |
| -SEan <burke_sp@pacbell.net> |
| |
| ------------------------------------------------------------ |
| 11. Perl |
| |
| Net-snmp may be compiled with Perl support by adding the lines: |
| |
| --enable-shared --enable-embedded-perl |
| |
| to your ./configure invocation. |
| |
| This should only be done if you are sure you really need Perl, |
| for the following reasons: |
| |
| Solaris 8 and 9 ship with a version of Perl compiled using sun's cc. |
| |
| This causes a problem when attempting to compile net-snmp |
| with Perl functionality ie.: |
| |
| ./configure --with-mib-modules="host disman/event-mib ucd-snmp/diskio \ |
| smux agents mibII/mta_sendmail" --enable-shared --enable-embedded-perl |
| |
| because during the Perl section of the compile, it attempts to do so |
| using the methodology used to compile the original Perl, not |
| what you're currently using. This can be discovered by typing: |
| |
| perl -V |
| |
| and it says (among other things) |
| |
| Compiler: |
| cc='cc' |
| |
| and you don't have the full version of Sun's C compiler on your |
| system, it's going to break. |
| |
| In addition if it was compiled with: |
| |
| LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 |
| |
| net-snmp will not compile correctly. |
| |
| Given that the Perl provided with Solaris 8 (5.005_03) |
| and Solaris 9 (5.005_03 and 5.6.1) is somewhat stale, |
| upgrading may be to your advantage. |
| |
| Perl did not ship with Solaris before version 8. If you installed a |
| version from www.sunfreeware.com, it is compiled with some extra flags |
| that cause the net-snmp compile to break. |
| |
| In either case, you will need to compile and install Perl. |
| |
| There are, however, some issues. |
| |
| A. Some applications (eg. /usr/bin/kstat) require this exact version |
| of Perl because of libraries. These instructions below install Perl |
| in /usr/local/bin (and optionally /usr/bin/). The original is left |
| intact in /usr/perl5/bin/perl where, in fact, the kstat script looks |
| for it. If you have version specific scripts, you will need to do |
| the same either by invoking /usr/perl5/bin/perl or putting: |
| |
| #!/usr/perl/bin/perl -w |
| |
| as the first line of your script and making it executable |
| (see the /usr/bin/kstat source as an example). |
| |
| B. The instructions below disable large file support. |
| |
| This means that Perl would be unable to deal |
| successfully with files larger than 2 Gb. |
| Again, using /usr/perl5/bin/perl or a version compiled |
| with this functionality would solve this. |
| |
| Hence the ideal solution is a net-snmp specific Perl in its own directory. |
| |
| The following instructions will install a working Perl in /usr/local/net-snmp. |
| |
| Install gcc version 3.3.2 (or later) from www.sunfreeware.com. |
| |
| Download the current stable release of Perl |
| |
| http://www.cpan.org/src/stable.tar.gz |
| |
| and gunzip and untar. (This document assumes Perl 5.8.3) |
| |
| cd to the source directory and type the following: |
| |
| sh Configure -Dcc=gcc |
| |
| Accept most of the defaults, with some specific changes: |
| |
| Operating system name? [solaris] |
| Operating system version? [2.6] (or 2.7, 2.8, 2.9 ...) |
| Build Perl for SOCKS? [n] |
| Use the PerlIO abstraction layer? [y] |
| Build a threading Perl? [n] |
| Build Perl for multiplicity? [n] |
| Use which C compiler? [/usr/local/bin/gcc] |
| Directories to use for library searches? |
| [/usr/local/lib /usr/lib /usr/ccs/lib] |
| What is the file extension used for shared libraries? [so] |
| Try to use long doubles if available? [n] |
| What libraries to use? [-lsocket -lnsl -ldl -lm -lc] |
| What optimizer/debugger flag should be used? [-O] |
| Any additional cc flags? [-fno-strict-aliasing -I/usr/local/include] |
| Any additional ld flags (NOT including libraries)? [ -L/usr/local/lib] |
| Try to use 64-bit integers, if available? [y] (unless you're using 32-bit Solaris) |
| Try to use maximal 64-bit support, if available? [n] |
| What is your architecture name [sun4-solaris-64int] |
| Installation prefix to use? (~name ok) [/usr/local/net-snmp] |
| What installation prefix should I use for installing files? (~name ok) |
| [/usr/local/net-snmp] |
| Pathname where the private library files will reside? (~name ok) |
| [/usr/local/net-snmp/lib/perl5/5.8.3] |
| Where do you want to put the public architecture-dependent libraries? (~name ok) |
| [/usr/local/net-snmp/lib/perl5/5.8.3/sun4-solaris-64int] |
| Do you wish to attempt to use the malloc that comes with perl5? [n] |
| Installation prefix to use for add-on modules and utilities? (~name ok) |
| [/usr/local/net-snmp] |
| Pathname for the site-specific library files? (~name ok) |
| [/usr/local/net-snmp/lib/perl5/site_perl/5.8.3] |
| Pathname for the site-specific architecture-dependent library files? (~name ok) |
| [/usr/local/net-snmp/lib/perl5/site_perl/5.8.3/sun4-solaris-64int] |
| Do you want to configure vendor-specific add-on directories? [n] |
| Colon-separated list of additional directories for perl to search? [none] |
| Installation prefix to use for add-on modules and utilities? (~name ok) |
| [/usr/local/net-snmp] |
| Pathname where the public executables will reside? (~name ok) |
| [/usr/local/net-snmp/bin] |
| Install any extra modules (y or n)? [n] |
| Directory for the main Perl5 html pages? (~name ok) |
| [/usr/local/net-snmp/doc/html] |
| Directory for the Perl5 module html pages? (~name ok) |
| [/usr/local/net-snmp/doc/html/modules] |
| List of earlier versions to include in @INC? [none] |
| Do you want to install perl as /usr/bin/perl? [n] |
| Shall I use /usr/local/bin/nm to extract C symbols from the libraries? [n] |
| Do you wish to use dynamic loading? [y] |
| Source file to use for dynamic loading [ext/DynaLoader/dl_dlopen.xs] |
| Any special flags to pass to /usr/local/bin/gcc -c to compile shared library modules? |
| [-fPIC] |
| What command should be used to create dynamic libraries? |
| [/usr/local/bin/gcc] |
| Any special flags to pass to /usr/local/bin/gcc to create a dynamically loaded library? |
| [-G -L/usr/local/lib] |
| Any special flags to pass to /usr/local/bin/gcc to use dynamic linking? |
| [none] |
| Build a shared libperl.so (y/n) [n] |
| Where do the main Perl5 manual pages (source) go? (~name ok) |
| [/usr/local/net-snmp/man/man1] |
| What suffix should be used for the main Perl5 man pages? [1] |
| Where do the perl5 library man pages (source) go? (~name ok) |
| [/usr/local/net-snmp/man/man3] |
| What suffix should be used for the perl5 library man pages? [3] |
| Your host name appears to be "foo". Right? [y] |
| What is your domain name? [.bar.com] |
| What is your e-mail address? [something.else@foo.bar.com] |
| Perl administrator e-mail address [something.else@foo.bar.com] |
| Do you want to install only the version-specific parts of perl? [n] |
| Where do you keep publicly executable scripts? (~name ok) |
| [/usr/local/net-snmp/bin] |
| Pathname where the add-on public executables should be installed? (~name ok) |
| [/usr/local/net-snmp/bin] |
| Pathname where the site-specific html pages should be installed? (~name ok) |
| [/usr/local/net-snmp/doc/html] |
| Pathname where the site-specific library html pages should be installed? (~name ok) |
| [/usr/local/net-snmp/doc/html/modules] |
| Pathname where the site-specific manual pages should be installed? (~name ok) |
| [/usr/local/net-snmp/man/man1] |
| Pathname where the site-specific library manual pages should be installed? (~name ok) |
| [/usr/local/net-snmp/man/man3] |
| Pathname where add-on public executable scripts should be installed? (~name ok) |
| [/usr/local/net-snmp/bin] |
| Use the "fast stdio" if available? [y] |
| Try to understand large files, if available? [n] |
| What is the extension of dynamically loaded modules [so] |
| Shall I ignore gethostname() from now on? [n] |
| What is the size of a character (in bytes)? [1] |
| Do you still want to use vfork()? [n] |
| Doubles must be aligned on a how-many-byte boundary? [8] |
| Use which function to generate random numbers? [drand48] |
| What type pointer is the second argument to getgroups() and setgroups()? |
| [gid_t] |
| What pager is used on your system? [/usr/bin/more] |
| Which compiler compiler (yacc) shall I use? [yacc] |
| What extensions do you wish to load dynamically?[blah..blah..blah] (use the default) |
| What extensions do you wish to load statically? [ ] |
| |
| Run make depend now? [y] |
| |
| When it is finished, do: |
| |
| grep cppsymbols config.sh |
| |
| and make sure "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" does NOT appear. |
| |
| Then do: |
| |
| make |
| make test (ignore errors) |
| make install |
| /usr/local/net-snmp/bin/perl -V |
| |
| if everything looks all right, compile net-snmp (see above) but with the following differences: |
| |
| Set your path to: |
| |
| PATH=/usr/local/net-snmp/bin:/usr/local/bin:/usr/bin:/usr/sbin:/usr/ccs/bin: |
| |
| Type: |
| |
| perl -v |
| |
| ...and... |
| |
| which perl |
| |
| to make sure you get the correct version. |
| |
| Your configure invocation should be... |
| |
| ./configure --with-gnu-ld --enable-shared --enable-embedded-perl --disable-developer \ |
| --with-mib-modules="host disman/event-mib ucd-snmp/diskio examples/example smux \ |
| agentx mibII/mta_sendmail" --with-cc=gcc |
| |
| Once you have compiled and installed net-snmp you should test its Perl |
| capabilities by doing the following: |
| |
| Copy the perl_module.pl script found at |
| |
| http://www.net-snmp.org/tutorial-5/toolkit/perl/index.html |
| |
| to /usr/local/net-snmp |
| |
| and modify your /usr/local/share/snmp/snmpd.conf file to contain the entry: |
| |
| perl do "/usr/local/net-snmp/perl_module.pl"; |
| |
| then do: |
| |
| /usr/local/bin/snmpwalk -v 2c -c whatever localhost .1.3.6.1.4.1.8072.999 |
| |
| It should return the following: |
| |
| NET-SNMP-MIB::netSnmp.999.1.2.1 = STRING: "hello world" |
| |
| WARNING!! If you are planning on created binary versions of net-snmp with Perl capability, |
| you will also need to ship the Perl which you created in /usr/local/net-snmp. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 12. sed and $PATH |
| |
| (note, if you have followed the recommendations for $PATH |
| above, this is not an issue -- Bruce Shaw <Bruce.Shaw at shaw.ca>) |
| |
| The version of sed in /usr/ucb on Solaris 2.5.1 and 2.6 can't |
| cope with the size of the subsitution strings used in config.status. |
| |
| Putting /usr/bin ahead of /usr/ucb in the search path fixes this. |
| |
| /usr/xpg4/bin/sed is seen to segfault under Solaris 8 when running configure. |
| Putting /usr/bin ahead of /usr/xpg4/bin fixes this. |
| Thanks to zach dot metzinger at removeme microtune dot com. |
| |
| ------------------------------------------------------------ |
| 13. OpenSSL |
| |
| If compiling with OpenSSL (e.g. from sunsolve), it's possible that |
| the agent won't successfully load the crypto library (typically |
| in /usr/local/ssl/lib) when it is in use and will return a |
| cannot find library error message of some sort. |
| |
| To rectify this, you will need to use the /usr/bin/crle command, which |
| did NOT ship with some versions of Solaris, but came as part of later |
| patches. You should make sure the following patches are up to date: |
| |
| 107733 (Solaris 2.6) |
| 106950 (Solaris 2.7) |
| 109147 (Solaris 8) |
| 115833 (Trusted Solaris 8) |
| 112693 (Solaris 9) |
| |
| Then type the following: |
| |
| /usr/bin/crle |
| |
| It will return something like: |
| |
| Default configuration file (/var/ld/ld.config) not found |
| Default Library Path (ELF): /usr/lib (system default) |
| Trusted Directories (ELF): /usr/lib/secure (system default) |
| |
| Find the location of the libcrypto libraries by typing: |
| |
| find /usr -name "libcrypto*" -print |
| |
| which will probably display: |
| |
| /usr/local/ssl/lib/libcrypto.a |
| /usr/local/ssl/lib/libcrypto.so |
| /usr/local/ssl/lib/libcrypto.so.0 |
| /usr/local/ssl/lib/libcrypto.so.0.9.7 |
| |
| which is the default installation for OpenSSL. |
| |
| To include this in the loader search path, type: |
| |
| /usr/bin/crle -u -l /usr/local/ssl/lib |
| |
| /usr/bin/crle will now display: |
| |
| Configuration file [3]: /var/ld/ld.config |
| Default Library Path (ELF): /usr/lib:/usr/local/ssl/lib |
| Trusted Directories (ELF): /usr/lib/secure (system default) |
| |
| Command line: |
| crle -c /var/ld/ld.config -l /usr/lib:/usr/local/ssl/lib |
| |
| If this fails, usually by displaying: |
| |
| crle: /var/ld/ld.config: open failed: No such file or directory |
| |
| you will need to create this directory by hand by doing the following: |
| |
| mkdir /var/ld |
| cd /var/ld |
| ln -s . 32 |
| mkdir sparcv9 |
| chgrp bin sparcv9 |
| ln -s sparcv9 64 |
| touch ld.config |
| |
| then do: |
| |
| crle -c /var/ld/ld.config -l /usr/lib:/usr/local/ssl/lib |
| |
| Thanks to Dave Shield and Johannes Schmidt-Fischer |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 14. Wish list |
| |
| A. Code cleanup |
| |
| There may be opportunities for shared code between UCD-SNMP |
| and HOST-RESOURCES-MIB. |
| |
| There may be opportunities to optimize caching perhaps |
| using the new auto-caching code. |
| |
| B. LM-SENSORS-MIB |
| |
| We need a complete list of sensors from various platforms so |
| they can be displayed properly. |
| |
| C. ORACLE |
| |
| How to get ORACLE's SNMP functionality to work as a sub-agent. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 15. Known Bugs!! |
| |
| A. hrDeviceTable (HOST-RESOURCES-MIB) |
| |
| This section of code is only aware of disk controllers 0 through 7. |
| Hence, anything on controller c8 and above will be invisible. |
| |
| B. hrPartitionTable (HOST-RESOURCES-MIB) |
| |
| At present, hrPartitionSize data only works for regular ufs |
| partitions eg. /dev/dsk/c0t0d0s0 that are mounted. They |
| are displayed in partition order rather than the order |
| they are mounted. Partitions mounted as mirrors, metastate |
| database replicas, swap or members of a RAID display size 0. |
| |
| As a workaround, put entries for disks you are |
| interested in in snmpd.conf and examine |
| using UCD-SNMP-MIB. |
| |
| C. DISMAN-EVENT-MIB |
| |
| Some of the functionality within DISMAN-EVENT-MIB does not |
| work as advertised. See long discussion under section 8 above. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| 16. Discussion and further information |
| |
| For discussion or further information contact the coders and users |
| lists at http://sourceforge.net/mail/?group_id=12694 . |
| |