| 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) |
| 10. MIB rewrites for IF-MIB, TCP-MIB and UDP-MIB |
| |
| Additional compilation issues: |
| |
| 11. Files descriptors and fopen |
| 12. Perl |
| 13. sed |
| 14. OpenSSL and crle |
| 15. IPv6 |
| 16. Wish list |
| |
| Other issues: |
| |
| 17. Known Bugs!! |
| 18. Discussion and further information |
| |
| ------------------------------------------------------------ |
| |
| 0. Introduction |
| |
| 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 |
| (at least for the default ports). |
| |
| 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. |
| |
| |
| If you have decided to compile your own net-snmp, you will need ... |
| |
| C. 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 14). |
| |
| 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 (2.95.3 or better have been tested) |
| 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. We also do regular test |
| builds with Sun cc, though. |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| -- Thomas Anders <tanders@users.sourceforge.net> |
| |
| ------------------------------------------------------------ |
| |
| 2. Disabling Sun's SNMP daemons |
| |
| Note: Sun has started to include net-snmp (version 5.0.9 plus their |
| patches) with Solaris 10 and later. These instructions are written |
| with Solaris 9 and previous in mind. |
| |
| Out of the box, Sun runs four SNMP daemons: mibiisa, idmispd, |
| snmpXdmid 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. |
| See dist/snmpd-init.d and dist/snmptrapd-init.d for templates. |
| |
| -- 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 (installed in /usr/local/bin): |
| |
| 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 |
| |
| 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="ucd-snmp/lmSensors ucd-snmp/diskio \ |
| smux mibII/mta_sendmail" --with-cc=gcc |
| |
| (note, see the long discussion about Perl below) |
| (note, substitute "cc" for "gcc" as appropriate) |
| (note, for LM-SENSORS-MIB support, 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.4 |
| 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 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. |
| |
| 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 that ships |
| with the binaries. |
| |
| --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 -Le |
| |
| or use gdb (available from www.sunsolve.com) as follows: |
| |
| cd /usr/local/sbin |
| gdb snmpd |
| run -f -Le |
| |
| and when it blows up: |
| |
| bt |
| |
| to get the backtrace. |
| |
| You can use: |
| |
| run -f -Le -D <modulename> |
| |
| to display debug messages. |
| |
| To display all debug messages type: |
| |
| run -f -Le -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.4.custom-SunOS_5.8_sun4u.tar (see above) |
| (this particular one means "a customized version of |
| net-snmp 5.4 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.4.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.4.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 subagent 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 snmpdx.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.rsrc |
| |
| 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 # |
| ########## |
| |
| # The following 3 macros are predefined: |
| # |
| # mib-2 = 1.3.6.1.2.1 |
| # enterprise = 1.3.6.1.4.1 |
| # sun = 1.3.6.1.4.1.42 |
| # |
| # You can define your own macros, so that you can |
| # manipulate strings instead of OIDs in defining the agent. |
| # See the "agent" section below. |
| |
| macros = |
| { |
| host = mib-2.25 |
| ucd = enterprise.2021 |
| } |
| |
| agents = |
| { |
| { |
| name = "net-snmp" |
| subtrees = { host,ucd } |
| timeout = 2000000 |
| watch-dog-time = 86400 |
| } |
| } |
| |
| :::::::::::::::::: |
| |
| ::::: net-snmp.rsrc :::::: |
| |
| # /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) |
| |
| Important note: this section only applies to the old DISMAN-EVENT-MIB |
| implementation called "disman/event-mib", *not* the current "disman/event" |
| mib module which is active by default since net-snmp 5.3 and later. |
| |
| For a full explanation of using DISMAN-EVENT-MIB, see: |
| |
| http://www.net-snmp.org/man/snmpd.conf.html |
| |
| To use this component, 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 module (ucd-snmp/lmSensors) works in "read only" mode to examine |
| sensors. It cannot change switch or fan settings. |
| |
| It has been tested at least 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 from net-snmp: |
| |
| 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. MIB rewrites for IF-MIB, TCP-MIB and UDP-MIB |
| |
| net-snmp 5.4 has started to include rewrites for the IF-MIB, TCP-MIB and |
| UDP-MIB implementations. They need to be explicitely enabled, though: |
| |
| ./configure --enable-mfd-rewrites ... |
| |
| See the Net-SNMP Wiki (http://www.net-snmp.org/wiki/index.php/IF-MIB_rewrite) |
| for further details. |
| |
| Thanks to Sun for the excellent patches. |
| |
| |
| -- Thomas Anders <tanders@users.sourceforge.net> |
| |
| ------------------------------------------------------------ |
| |
| 11. 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 intended 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> |
| |
| ------------------------------------------------------------ |
| |
| 12. Perl |
| |
| Net-SNMP may be compiled with Perl support by configuring like: |
| |
| ./configure -enable-embedded-perl ... |
| |
| This should only be done if you are sure you really need Perl, |
| for the following reasons: |
| |
| Solaris 8 and later 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="ucd-snmp/lmSensors ucd-snmp/diskio \ |
| smux mibII/mta_sendmail" --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 or later) |
| |
| cd to the source directory and type the following: |
| |
| sh Configure -Dcc=gcc -Dprefix=/usr/local/net-snmp -Uinstallusrbinperl \ |
| -Duseshrplib -Dcf_email=your_email@your_domain \ |
| -Dperladmin=your_email@your_domain -Uuselargefiles -de |
| |
| Replace your_email@your_domain by your real email address. If you intend |
| to compile Net-SNMP with Sun cc later on, replace gcc with cc above. |
| |
| 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 (optional) |
| make install |
| /usr/local/net-snmp/bin/perl -V |
| |
| if everything looks all right, compile net-snmp (see above) with the |
| following differences: |
| |
| env PERLPROG=/usr/local/net-snmp/bin/perl ./configure --enable-embedded-perl \ |
| --with-mib-modules=ucd-snmp/lmSensors,ucd-snmp/diskio,smux,mibII/mta_sendmail \ |
| --with-cc=gcc && make && make test && make install |
| |
| Make sure you specify the correct path to your self-compiled Perl binary |
| and use the same compiler like the one you used when building Perl above. |
| Feel free to add other configure options, of course. |
| |
| "make test" includes some tests for the Net-SNMP Perl functionalities. |
| |
| Once you have compiled and installed net-snmp you can test the Perl |
| capabilities of the final installation 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 creating 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> |
| -- Thomas Anders <tanders@users.sourceforge.net> |
| |
| ------------------------------------------------------------ |
| |
| 13. sed |
| |
| Various sed versions in older Solaris releases (Solaris 8 and earlier |
| at least) have serious limitations that may affect ./configure |
| when building net-snmp. All these issues *should* have been addressed |
| in net-snmp 5.4 and later. If you still have problems, please let us know |
| and consider: |
| |
| - installing GNU sed and putting it in front of your PATH |
| - installing the available Sun patches for the various sed versions |
| (/usr/bin/sed, /usr/xpg4/bin/sed, /usr/ucb/sed) |
| - try the suggestions below |
| |
| The version of sed in /usr/ucb on Solaris 2.5.1 and 2.6 can't |
| cope with the size of the substitution 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. |
| |
| |
| -- Thomas Anders <tanders@users.sourceforge.net> |
| -- zach dot metzinger at microtune dot com |
| |
| ------------------------------------------------------------ |
| |
| 14. OpenSSL and crle |
| |
| 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> |
| |
| ------------------------------------------------------------ |
| |
| 15. IPv6 |
| |
| Starting with net-snmp 5.4 you can enable the UDPIPv6 and TCPIPv6 |
| transports on Solaris: |
| |
| ./configure --enable-ipv6 |
| |
| There's no support for the mibII/ipv6 mib module, though. |
| |
| |
| -- Thomas Anders <tanders@users.sourceforge.net> |
| |
| ------------------------------------------------------------ |
| |
| 16. 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. |
| |
| D. Largefile support |
| |
| Rework the host mib module to work even if net-snmp is built with |
| largefile support. This would eliminate the most important problems |
| with Perl (see section 12). |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| -- Thomas Anders <tanders@users.sourceforge.net> |
| |
| ------------------------------------------------------------ |
| |
| 17. 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. |
| |
| |
| -- Bruce Shaw <Bruce.Shaw at shaw.ca> |
| |
| ------------------------------------------------------------ |
| |
| 18. Discussion and further information |
| |
| For discussion or further information contact the coders and users |
| lists at http://sourceforge.net/mail/?group_id=12694 . |
| |