.\" -*- 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 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 SNMPSET 1 "19 Jun 2003" VVERSIONINFO "Net-SNMP"
.SH NAME
snmpset - communicates with a network entity using SNMP SET requests
.SH SYNOPSIS
.B snmpset
[COMMON OPTIONS] AGENT OID TYPE VALUE [OID TYPE VALUE]...
.SH DESCRIPTION
.B snmpset
is an SNMP application that uses the SNMP SET request to set
information on a network entity.  One or more object identifiers
(OIDs) must be given as arguments on the command line.  A type and a
value to be set must accompany each object identifier.  Each variable
name is given in the format specified in
.IR variables(5) .
.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 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
Most of these will use the obvious corresponding ASN.1 type.
\&'s', 'x', 'd' and 'b' are all different ways of specifying an OCTET STRING
value, and the 'u' unsigned type is also used for handling Gauge32 values.
.PP
If you have the proper MIB file loaded, you can, in most cases, replace the
type with an '=' sign. For an object of type OCTET STRING this will assume
a string like the 's' type notation. For other types it will do "The
Right Thing".
.PP
For example:
.PP
snmpset -c private -v 1 test-hub system.sysContact.0 s dpz@noc.rutgers.edu ip.ipforwarding.0 = 2
.PP
will set the variables sysContact.0 and ipForwarding.0:
.PP
system.sysContact.0 = STRING: "dpz@noc.rutgers.edu"
.br
ip.ipForwarding.0 = INTEGER: not-forwarding(2)
.PP
If the network entity has an error processing the request packet, an
error packet will be returned and a message will be shown, helping to
pinpoint in what way the request was malformed.
.SH OPTIONS
.B snmpset
takes the common options described in the
.I snmpcmd(1)
manual page.
Note that
.B snmpset
REQUIRES  an argument specifying the agent to query
and at least one set of OID/type/value arguments, as described in there.
.SH "SEE ALSO"
snmpcmd(1), variables(5).
