.\" -*- nroff -*-
.\" Portions of this file are subject to the following copyright.
.\" See the Net-SNMP COPYING file for more details and other
.\" copyrights that may apply:
.\" /***********************************************************
.\" 	Copyright 1989 by Carnegie Mellon University
.\" 
.\"                       All Rights Reserved
.\" 
.\" Permission to use, copy, modify, and distribute this software and its 
.\" documentation for any purpose and without fee is hereby granted, 
.\" provided that the above copyright notice appear in all copies and that
.\" both that copyright notice and this permission notice appear in 
.\" supporting documentation, and that the name of CMU not be
.\" used in advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.  
.\" 
.\" CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
.\" ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
.\" CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
.\" ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
.\" WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
.\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
.\" SOFTWARE.
.\" ******************************************************************/
.TH SNMPTRAPD 8 "30 Mar 2011" VVERSIONINFO "Net-SNMP"
.SH NAME
snmptrapd - Receive and log SNMP trap messages.
.SH SYNOPSIS
.BR snmptrapd " [OPTIONS] [LISTENING ADDRESSES]"
.SH DESCRIPTION
.B snmptrapd
is an SNMP application that receives and logs SNMP TRAP and INFORM
messages.
.PP
Note: the default is to listen on UDP port 162 on all IPv4 interfaces.
Since 162 is a privileged port,
.B snmptrapd
must typically be run as root.
.SH OPTIONS
.TP 8
.B -a
Ignore authenticationFailure traps.
.TP
.B -A
Append to the log file rather than truncating it.

Note that this needs to come \fIbefore\fP any -Lf options
that it should apply to.
.TP
.BI "-c" " FILE"
Read 
.I FILE
as a configuration file
(or a comma-separated list of configuration files).
.TP
.B -C
Do not read any configuration files except the one optionally specified by the 
.B -c 
option.
.TP
.B -d
Dump (in hexadecimal) the sent and received SNMP packets.
.TP
.BI -D[TOKEN[,...]]
Turn on debugging output for the given
.IR "TOKEN" "(s)."
Try
.IR ALL
for extremely verbose output.
.TP
.B -f
Do not fork() from the calling shell.
.TP
.BI -F " FORMAT"
When logging to standard output, use the format in the string
.IR FORMAT .
See the section
.B FORMAT SPECIFICATIONS
below for more details.
.TP
.B -h, --help
Display a brief usage message and then exit.
.TP
.B -H
Display a list of configuration file directives understood by the
trap daemon and then exit.
.TP
.B -I \fI[-]INITLIST
Specifies which modules should (or should not) be initialized
when snmptrapd starts up.  If the comma-separated
.I INITLIST
is preceded
with a '-', it is the list of modules that should \fInot\fR be started.
Otherwise this is the list of the \fIonly\fR modules that should be started.

To get a list of compiled modules, run snmptrapd with the arguments
.I "-Dmib_init -H"
(assuming debugging support has been compiled in).
.TP
.B -L[efos]
Specify where logging output should be directed (standard error or output,
to a file or via syslog).  See LOGGING OPTIONS in \fIsnmpcmd(1)\fR for details.
.TP
.BR -m " \fIMIBLIST"
Specifies a colon separated list of MIB modules to load for this
application.  This overrides the environment variable MIBS.
See \fIsnmpcmd(1)\fR for details.
.TP
.BR -M " \fIDIRLIST"
Specifies a colon separated list of directories to search for MIBs.
This overrides the environment variable MIBDIRS.
See \fIsnmpcmd(1)\fR for details.
.TP
.BR -n
Do not attempt to translate source addresses of incoming packets into
hostnames.
.TP
.BI -p " FILE"
Save the process ID of the trap daemon in
.IR FILE "."
.TP
.BI -O " [abeEfnqQsStTuUvxX]"
Specifies how MIB objects and other output should be displayed.
See the section
.B OUTPUT OPTIONS
in the
.I snmpcmd(1)
manual page for details.
.TP
.BI -t
Do not log traps to syslog.  This disables logging to syslog.  This is
useful if you want the snmptrapd application to
.B only
run traphandle hooks and not to log any traps to any location.
.TP
.B -v, --version
Print version information for the trap daemon and then exit.
.TP
.B -x \fIADDRESS
Connect to the AgentX master agent on the specified address,
rather than the default AGENTX_SOCKET.
See \fIsnmpd(8)\fR for details of the format of such addresses.
.TP
.BI -- "name"="value"
Allows to specify any token ("name") supported in the
.I snmptrapd.conf
file and sets its value to "value". Overrides the corresponding token in the
.I snmptrapd.conf
file. See
.I snmptrapd.conf(5)
for the full list of tokens.
.SH FORMAT SPECIFICATIONS
.PP
.B snmptrapd
interprets format strings similarly to
.IR printf(3) .
It understands the following formatting sequences:
.RS 4
.TP 4
.B %%
a literal %
.TP
.B %a
the contents of the agent-addr field of the PDU (v1 TRAPs only)
.TP
.B %A
the hostname corresponding to the contents of the agent-addr field of
the PDU, if available, otherwise the contents of the agent-addr field
of the PDU (v1 TRAPs only).
.TP
.B %b
PDU source address (Note: this is not necessarily an IPv4
address)
.TP
.B %B
PDU source hostname if available, otherwise PDU source address (see
note above) 
.TP
.B %h
current hour on the local system
.TP
.B %H
the hour field from the \fCsysUpTime.0\fR varbind
.TP
.B %j
current minute on the local system
.TP
.B %J
the minute field from the \fCsysUpTime.0\fR varbind
.TP
.B %k
current second on the local system
.TP
.B %K
the seconds field from the \fCsysUpTime.0\fR varbind
.TP
.B %l
current day of month on the local system
.TP
.B %L
the day of month field from the \fCsysUpTime.0\fR varbind
.TP
.B %m
current (numeric) month on the local system
.TP
.B %M
the numeric month field from the \fCsysUpTime.0\fR varbind
.TP
.B %N
enterprise string
.TP
.B %q
trap sub-type (numeric, in decimal)
.TP
.B %P
security information from the PDU (community name for v1/v2c,
user and context for v3)
.TP
.B %t
decimal number of seconds since the operating system epoch (as
returned by
.IR time(2) )
.TP
.B %T
the value of the \fCsysUpTime.0\fR varbind in seconds
.TP
.B %v
list of variable-bindings from the notification payload.
These will be separated by a tab, 
or by a comma and a blank if the alternate form is requested
See also %V
.TP
.B %V
specifies the variable-bindings separator. This takes a sequence of
characters, up to the next % (to embed a % in the string, use \\%)
.TP
.B %w
trap type (numeric, in decimal)
.TP
.B %W
trap description
.TP
.B %y
current year on the local system
.TP
.B %Y
the year field from the \fCsysUpTime.0\fR varbind
.RE
.PP
In addition to these values, an optional field
width and precision may also be specified , just as in 
.IR printf(3) ,
and a flag value. The following flags are supported:
.RS 4 
.TP 4
.B -
left justify
.TP
.B 0
use leading zeros
.TP
.B #
use alternate form
.RE
.PP
The "use alternate form" flag changes the behavior of various format
string sequences:
.IP
Time information will be displayed based on GMT (rather than the local timezone)
.IP
The variable-bindings will be a comma-separated list (rather than a tab-separated one)
.IP
The system uptime will be broken down into a human-meaningful format (rather than being a simple integer)
.SS Examples:
.PP
To get a message like "14:03 TRAP3.1 from humpty.ucd.edu" you 
could use something like this:
.PP
.RS
.nf
snmptrapd -P -F "%02.2h:%02.2j TRAP%w.%q from %A\en"
.fi
.RE
.PP
If you want the same thing but in GMT rather than local time, use
.PP
.RS
.nf
snmptrapd -P -F "%#02.2h:%#02.2j TRAP%w.%q from %A\en"
.fi
.RE
.SH LISTENING ADDRESSES
By default,
.B snmptrapd
listens for incoming SNMP TRAP and INFORM packets on UDP port 162 on
all IPv4 interfaces.  However, it is possible to modify this behaviour
by specifying one or more listening addresses as arguments to
.BR snmptrapd .
See the
.I snmpd(8)
manual page for more information about the format of listening
addresses.
.SH NOTIFICATION-LOG-MIB SUPPORT
As of net-snmp 5.0, the snmptrapd application supports the
NOTIFICATION-LOG-MIB.  It does this by opening an AgentX subagent
connection to the master snmpd agent and registering the notification
log tables.  As long as the snmpd application is started first, it
will attach itself to it and thus you should be able to view the last
recorded notifications via the nlmLogTable and nlmLogVariableTable.
See the snmptrapd.conf file and the "doNotRetainNotificationLogs" token
for turning
off this support.  See the NOTIFICATION-LOG-MIB for more details about
the MIB itself.
.SH EXTENSIBILITY AND CONFIGURATION
See the
.I snmptrapd.conf(5)
manual page.
.SH "SEE ALSO"
snmpcmd(1), snmpd(8), printf(3), snmptrapd.conf(5), syslog(8), variables(5)
