.\" /***********************************************************
.\" 	Copyright 1988, 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 SNMPTRAP 1 "08 Feb 2002" VVERSIONINFO "Net-SNMP"
.UC 4
.SH NAME
snmptrap, snmpinform - sends an SNMP trap to a manager
.SH SYNOPSIS
.B snmptrap -v 1
[COMMON OPTIONS] [-Ci] enterprise-oid agent generic-trap specific-trap uptime [OID TYPE VALUE]...
.PP
.B snmptrap -v [2c|3]
[COMMON OPTIONS] [-Ci] uptime trap-oid [OID TYPE VALUE]...
.PP
.B snmpinform -v [2c|3]
[COMMON OPTIONS] uptime trap-oid [OID TYPE VALUE]...
.SH DESCRIPTION
.B snmptrap
is an SNMP application that uses the SNMP TRAP operation to send
information to a network manager.  One or more object identifiers
(OIDs) can be given as arguments on the command line.  A type and a
value must accompany each object identifier.  Each variable name is
given in the format specified in 
.IR variables(5) .
.PP
When invoked as
.B snmpinform,
or when
.B -Ci
is added to the command line flags of snmptrap, it sends an
INFORM-PDU, expecting a response from the trap receiver,
retransmitting if required.  Otherwise it sends an TRAP-PDU or
TRAP2-PDU.
.PP
If any of the required version 1 parameters, 
.IR enterprise-oid ,
.IR agent ,
and
.I uptime
are specified as empty, it defaults to
.IR "1.3.6.1.4.1.3.1.1 (enterprises.cmu.1.1)" ,
.IR hostname ,
and
.I host-uptime
respectively.
.PP
The
.I TYPE
is a single character, one of:
.RS
.PD 0
.TP 3
.B i
INTEGER
.TP 3
.B u
UNSIGNED
.TP 3
.B c
COUNTER32
.TP 3
.B s
STRING
.TP 3
.B x
HEX STRING
.TP 3
.B d
DECIMAL STRING
.TP 3
.B n
NULLOBJ
.TP 3
.B o
OBJID
.TP 3
.B t
TIMETICKS
.TP 3
.B a
IPADDRESS
.TP 3
.B b
BITS
.PD
.RE
which are handled in the same way as the
.B snmpset
command.
.PP
For example:
.PP
snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
.PP
will send a generic linkUp trap to manager, for interface 1.
.SH OPTIONS
.B snmptrap
takes the common options described in the
.I snmpcmd(1) 
manual page in
addition to the 
.B -Ci
option described above.
.SH SEE ALSO
snmpcmd(1), snmpset(1), variables(5).
