| .TH SNMP_CONFIG 5 "08 Mar 2010" VVERSIONINFO "Net-SNMP" |
| .SH NAME |
| snmp_config - handling of Net-SNMP configuration files |
| .SH DESCRIPTION |
| The Net-SNMP package uses various configuration files to configure its |
| applications. This manual page merely describes the overall nature of |
| them, so that the other manual pages don't have to. |
| .SH "DIRECTORIES SEARCHED" |
| First off, there are numerous places that configuration files can be |
| found and read from. By default, the applications look for |
| configuration files in the following 4 directories, in order: |
| SYSCONFDIR/snmp, |
| DATADIR/snmp, LIBDIR/snmp, and $HOME/.snmp. In each of these |
| directories, it looks for files snmp.conf, snmpd.conf and/or |
| snmptrapd.conf, as well as snmp.local.conf, snmpd.local.conf |
| and/or snmptrapd.local.conf. *.local.conf are always |
| read last. In this manner, there are |
| 8 default places a configuration file can exist for any given |
| configuration file type. |
| .PP |
| Additionally, the above default search path can be overridden by |
| setting the environment variable SNMPCONFPATH to a colon-separated |
| list of directories to search for. The path for the persistent |
| data should be included when running applications that use |
| persistent storage, such as snmpd. |
| .PP |
| Applications will read persistent configuration files |
| in the following order of preference: |
| .RS |
| .PP |
| file in |
| .B SNMP_PERSISTENT_FILE |
| environment variable |
| .br |
| directories in |
| .B SNMPCONFPATH |
| environment variable |
| .br |
| directory defined by |
| .B |
| persistentDir |
| snmp.conf variable |
| .br |
| directory in |
| .B |
| SNMP_PERSISTENT_DIR |
| environment variable |
| .br |
| default |
| .B |
| PERSISTENT_DIRECTORY |
| directory |
| .RE |
| .PP |
| Finally, applications will write persistent configuration files |
| in the following order of preference: |
| .RS |
| .PP |
| file in |
| .B SNMP_PERSISTENT_FILE |
| environment variable |
| .br |
| directory defined by |
| .B |
| persistentDir |
| snmp.conf variable |
| .br |
| directory in |
| .B |
| SNMP_PERSISTENT_DIR |
| environment variable |
| .br |
| default |
| .B |
| PERSISTENT_DIRECTORY |
| directory |
| .RE |
| .PP |
| Note: When using SNMP_PERSISTENT_FILE, the filename should match the |
| application name. For example, /var/net-snmp/snmpd.conf. |
| .SH "CONFIGURATION FILE TYPES" |
| Each application may use multiple configuration files, which will |
| configure various different aspects of the application. For instance, |
| the SNMP agent |
| .RB ( snmpd ) |
| knows how to understand configuration |
| directives in both the snmpd.conf and the snmp.conf files. In fact, |
| most applications understand how to read the contents of the snmp.conf |
| files. Note, however, that configuration directives understood in one |
| file may not be understood in another file. For further information, |
| read the associated manual page with each configuration file type. |
| Also, most of the applications support a |
| .B -H |
| switch on the command line that will list the configuration files it |
| will look for and the directives in each one that it understands. |
| .PP |
| The snmp.conf configuration file is intended to be a application suite |
| wide configuration file that supports directives that are useful for |
| controlling the fundamental nature of all of the SNMP applications, |
| such as how they all manipulate and parse the textual SNMP MIB files. |
| .SH "SWITCHING CONFIGURATION TYPES IN MID-FILE" |
| It's possible to switch in mid-file the configuration type that the |
| parser is supposed to be reading. Since that sentence doesn't make |
| much sense, lets give you an example: say that you wanted to turn on |
| packet dumping output for the agent by default, but you didn't want to |
| do that for the rest of the applications (ie, snmpget, snmpwalk, ...). |
| Normally to enable packet dumping in the configuration file |
| you'd need to put a line like: |
| .PP |
| .RS |
| dumpPacket true |
| .RE |
| .PP |
| into the snmp.conf file. But, this would turn it on for all of the |
| applications. So, instead, you can put the same line in the |
| snmpd.conf file so that it only applies to the snmpd daemon. However, |
| you need to tell the parser to expect this line. You do this by |
| putting a special type specification token inside a [] set. In other |
| words, inside your snmpd.conf file you could put the above snmp.conf |
| directive by adding a line like so: |
| .PP |
| .RS |
| [snmp] dumpPacket true |
| .RE |
| .PP |
| This tells the parser to parse the above line as if it were inside a |
| snmp.conf file instead of an snmpd.conf file. If you want to parse a |
| bunch of lines rather than just one then you can make the context |
| switch apply to the remainder of the file or until the next context |
| switch directive by putting the special token on a line by itself: |
| .PP |
| .RS |
| .nf |
| # make this file handle snmp.conf tokens: |
| [snmp] |
| dumpPacket true |
| logTimestamp true |
| # return to our original snmpd.conf tokens: |
| [snmpd] |
| rocommunity mypublic |
| .fi |
| .RE |
| .PP |
| The same approach can be used to set configuration directives for a |
| particular client application (or group of applications). For example, |
| any program that uses the 'snmp_parse_args()' call to handle command-line |
| arguments (including the standard command-line tools shipped as part of the |
| Net-SNMP distributions) will automatically read the config file 'snmpapp.conf'. |
| To set library-level settings for these applications (but not other |
| more-specific tools), use configuration such as the following: |
| .PP |
| .RS |
| [snmp] defCommunity myCommunity |
| .RE |
| .PP |
| for a single directive, or |
| .PP |
| .RS |
| .nf |
| # make this file handle snmp.conf tokens: |
| [snmp] |
| defCommunity myCommunity |
| defVersion 2c |
| # return to our original snmpapp.conf tokens: |
| [snmpapp] |
| .fi |
| .RE |
| .PP |
| for multiple settings. |
| Similarly for any other application token (as passed to init_snmp()). |
| .SH COMMENTS |
| .PP |
| Any lines beginning with the character '#' in the configuration files |
| are treated as a comment and are not parsed. |
| .SH "INCLUDING OTHER CONFIGURATION FILES" |
| It is possible to include other configuration files for processing |
| during normal configuration file processing.: |
| .PP |
| .RS |
| .nf |
| # include site specific config |
| includeFile site.conf |
| .RE |
| .PP |
| This will load the specified configuration file. The |
| path to file must be either absolute, starting with '/', |
| or relative. The relative path is then relative to the directory |
| where the parent file with 'includeFile' directive resides. |
| .PP |
| The included file name does not need to have '.conf' suffix. |
| .PP |
| .RS |
| .nf |
| # include a all *.conf files in a directory |
| includeDir /etc/snmp/config.d |
| .RE |
| .PP |
| This will search specified directory for all files with '.conf' |
| suffix and process them as if they were included using includeFile |
| directive. The configuration files are not processed in any particular |
| order. |
| .PP |
| The specified directory must be absolute directory path. |
| .SH "API INTERFACE" |
| .PP |
| Information about writing C code that makes use of this system in |
| either the agent's MIB modules or in applications can be found in the |
| .I netsnmp_config_api(3) |
| manual page. |
| .SH "SEE ALSO" |
| snmpconf(1), |
| netsnmp_config_api(3), |
| snmp.conf(5), |
| snmpd.conf(5) |
| .\" Local Variables: |
| .\" mode: nroff |
| .\" End: |